El 13/06/14 10:41, Werner Fink escribió: > That is: set NOATIME, NOCOW, and NOCOMP for the journal directory > > --- > src/journal/journald-server.c | 29 +++++++++++++++++++++++++++-- > 1 file changed, 27 insertions(+), 2 deletions(-) > > diff --git src/journal/journald-server.c src/journal/journald-server.c > index eda5dcf..37d6dc3 100644 > --- src/journal/journald-server.c > +++ src/journal/journald-server.c > @@ -21,6 +21,7 @@ > > #include <sys/signalfd.h> > #include <sys/ioctl.h> > +#include <linux/fs.h> > #include <linux/sockios.h> > #include <sys/statvfs.h> > #include <sys/mman.h> > @@ -920,7 +921,7 @@ finish: > > > static int system_journal_open(Server *s) { > - int r; > + int r, fd;
_cleanup_close_ ... > + /* > + * On journaling and/or compressing file systems avoid > doubling the > + * efforts for the system, that is set NOCOW and NOCOMP > inode flags. > + * Check for every single flag as otherwise some of the file > systems > + * may return EOPNOTSUPP on one unkown flag (like BtrFS > does). > + */ > + if ((fd = open(fn, O_DIRECTORY)) >= 0) { O_CLOEXEC... > + long flags; > + if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) { > + int old = flags; > + if (!(flags&FS_NOATIME_FL) && ioctl(fd, > FS_IOC_SETFLAGS, flags|FS_NOATIME_FL) == 0) > + flags |= FS_NOATIME_FL; > + if (!(flags&FS_NOCOW_FL) && ioctl(fd, > FS_IOC_SETFLAGS, flags|FS_NOCOW_FL) == 0) > + flags |= FS_NOCOW_FL; > + if (!(flags&FS_NOCOMP_FL) && s->compress) { > + flags &= ~FS_COMPR_FL; > + flags |= FS_NOCOMP_FL; > + } > + if (old != flags) > + ioctl(fd, FS_IOC_SETFLAGS, flags); > + } > + close(fd); > + } I agree that this should be done, however I remain unconvinced this is the right place to do it.. -- Cristian "I don't know the key to success, but the key to failure is trying to please everybody." _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel