From 41b103580709866327863a3268b05eed55854b63 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Thu, 19 Feb 2004 22:19:50 +0000 Subject: [PATCH] moved fscompat* files to *iattr-fscompat* and applied the changed iattr interface git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@951 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- ...tr-fscompat.hc => syscall_getiattr-fscompat.hc} | 20 ++++++-------------- ...tr-fscompat.hc => syscall_setiattr-fscompat.hc} | 22 +++++++++------------- 2 files changed, 15 insertions(+), 27 deletions(-) rename util-vserver/lib/{fscompat_getiattr-fscompat.hc => syscall_getiattr-fscompat.hc} (85%) rename util-vserver/lib/{fscompat_setiattr-fscompat.hc => syscall_setiattr-fscompat.hc} (83%) diff --git a/util-vserver/lib/fscompat_getiattr-fscompat.hc b/util-vserver/lib/syscall_getiattr-fscompat.hc similarity index 85% rename from util-vserver/lib/fscompat_getiattr-fscompat.hc rename to util-vserver/lib/syscall_getiattr-fscompat.hc index 24d026f..c07bae3 100644 --- a/util-vserver/lib/fscompat_getiattr-fscompat.hc +++ b/util-vserver/lib/syscall_getiattr-fscompat.hc @@ -24,13 +24,12 @@ #include "ioctl-getfilecontext.hc" #include "ioctl-getxflg.hc" +#include static inline ALWAYSINLINE int -vc_get_iattr_compat_fscompat(char const *filename, - dev_t dev, ino_t ino, - xid_t * /*@null@*/ xid, - uint32_t * /*@null@*/ flags, - uint32_t * mask, - mode_t const *mode) +vc_get_iattr_fscompat(char const *filename, + xid_t * /*@null@*/ xid, + uint32_t * /*@null@*/ flags, + uint32_t * mask) { struct stat st; int stat_rc; @@ -39,9 +38,7 @@ vc_get_iattr_compat_fscompat(char const *filename, *mask = 0; - if (mode!=0) st.st_mode = *mode; - else if (lstat(filename, &st)==-1) return -1; - + if (lstat(filename, &st)==-1) return -1; if (!S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode)) return 0; fd = open(filename, O_RDONLY); @@ -50,11 +47,6 @@ vc_get_iattr_compat_fscompat(char const *filename, stat_rc = fstat(fd, &st); if (stat_rc==-1) goto err; - if (st.st_dev!=dev || st.st_ino!=ino) { - errno = EINVAL; - goto err; - } - if ( old_mask&VC_IATTR_XID ) { *xid = vc_X_get_filecontext(fd); if (*xid!=VC_NOCTX) *mask |= VC_IATTR_XID; diff --git a/util-vserver/lib/fscompat_setiattr-fscompat.hc b/util-vserver/lib/syscall_setiattr-fscompat.hc similarity index 83% rename from util-vserver/lib/fscompat_setiattr-fscompat.hc rename to util-vserver/lib/syscall_setiattr-fscompat.hc index a8e6f68..b35263a 100644 --- a/util-vserver/lib/fscompat_setiattr-fscompat.hc +++ b/util-vserver/lib/syscall_setiattr-fscompat.hc @@ -25,29 +25,23 @@ #include "ioctl-setxflg.hc" #include "ioctl-getxflg.hc" +#include + static inline ALWAYSINLINE int -vc_set_iattr_compat_fscompat(char const *filename, - dev_t dev, ino_t ino, xid_t xid, - uint32_t flags, uint32_t mask, - mode_t const *mode) +vc_set_iattr_fscompat(char const *filename, + xid_t xid, + uint32_t flags, uint32_t mask) { int fd; struct stat st; int stat_rc; - if (mode!=0 && !S_ISREG(*mode) && !S_ISDIR(*mode)) return 0; - fd = open(filename, O_RDONLY); if (fd==-1) return -1; stat_rc = fstat(fd, &st); if (stat_rc==-1) goto err; - if (st.st_dev!=dev || st.st_ino!=ino) { - errno = EINVAL; - goto err; - } - if ( (mask&VC_IATTR_IUNLINK) ) { int const tmp = VC_IMMUTABLE_FILE_FL|VC_IMMUTABLE_LINK_FL; if (vc_X_set_ext2flags(fd, @@ -57,8 +51,10 @@ vc_set_iattr_compat_fscompat(char const *filename, } if ( (mask&VC_IATTR_BARRIER) ) { - if (fchmod(fd, (flags&VC_IATTR_BARRIER) ? 0 : - (st.st_mode| (mode ? *mode : 0500)))==-1) + mode_t m = ((flags&VC_IATTR_BARRIER) ? 0 : + st.st_mode ? st.st_mode : 0500); + + if (fchmod(fd, m)==-1) goto err; } -- 1.8.1.5