[PVFS2-users] Files and directory not accessible with some
commands
Murali Vilayannur
vilayann at mcs.anl.gov
Wed Oct 26 13:18:52 EDT 2005
Hi,
I don't think the patches conflict with each other.
So go ahead and apply patches in any order (perms.patch and
dist-time.patch).
That said, I think we will be releasing a version (soon) that will fix all
these issues much more cleanly...
Thanks for the reports,
Murali
> Hi,
> I have four patches in this order.
> 1) src/server/pvfs2-server.h
> 2) src/kernel/linux-2.6/acl.c:1.5->1.6
>
> 3) dist-time.patch affecting
> pvfs2/include/pvfs2-util.h
> pvfs2/src/apps/kernel/linux/pvfs2-client-core.c
> pvfs2/src/client/sysint/acache.c
> pvfs2/src/client/sysint/sys-getattr.c
> pvfs2/src/client/sysint/sys-lookup.c
> pvfs2/src/common/misc/pint-util.c
>
> 4) perms.patch affecting
> src/kernel/linux-2.6/acl.c
> src/kernel/linux-2.6/devpvfs2-req.c
> src/kernel/linux-2.6/file.c
> src/kernel/linux-2.6/pvfs2-kernel.h
> src/kernel/linux-2.6/pvfs2-utils.c
> The first I can apply and is independent of the others.
> Could you tell me if I should apply (2, 3 and 4 in order) or (3 and then 4)
> or only 4 after the first one to the original pvfs2-1.3.0 source.
> ---Ekow
> ==============================================================
> Murali Vilayannur wrote:
>
> >Hi Ekow,
> >Could you try the attached patch to see if it fixes your permission error
> >problems?
> >It was basically breakage introduced by me due to the recent acl merges.
> >Hopefully, this patch will address that for good.
> >It should also fix some compiler warnings (on x86_64 boxes)...
> >Thanks,
> >Murali
> >
> >
> >On Mon, 24 Oct 2005, Ekow Otoo wrote:
> >
> >
> >
> >>Hi Rob,
> >>
> >>I have setup a new pvfs2 installation from scratch with pvfs2-1.3.0 on
> >>just two machines.
> >>All previous space, directory were whipped clean and recreated. Yet I
> >>still run into the
> >>problem of "permission denied" when running some commands.
> >>As a user I can create a directory but cannot cd into it. I cannot copy
> >>files into new directories either.
> >>I can copy a file into the /mnt/pvfs2 but I cannot display the content
> >>of the file.
> >>All commands work fine only if I am root. Is there some setting "eg.
> >>umask" that I should have ?
> >>My Linux installation is "Linux version 2.6.9-22.EL
> >>(buildcentos at louisa.home.local) (gcc version 3.4.4 20050721 (Red Hat
> >>3.4.4-2)) #1 Sat Oct 8 17:48:27 CDT 2005"
> >>A sample session is shown below:
> >>--------------------------------------------------------------------------------------------
> >>[ekw at ekow pvfs2]$ pwd
> >>/mnt/pvfs2
> >>[ekw at ekow pvfs2]$ pvfs2-ls
> >>TestDir
> >>lost+found
> >>[ekw at ekow pvfs2]$ ls -alF
> >>total 20
> >>drwxrwxrwx 1 root root 4096 Oct 24 13:48 ./
> >>drwxr-xr-x 3 root root 4096 Oct 24 13:22 ../
> >>drwxrwxrwx 1 root root 4096 Oct 24 13:30 lost+found/
> >>drwxrwxr-x 1 ekw ekw 4096 Oct 24 13:46 TestDir/
> >>[ekw at ekow pvfs2]$ mkdir TT
> >>[ekw at ekow pvfs2]$ cd TT
> >>bash: cd: TT: Permission denied
> >>[ekw at ekow pvfs2]$ pvfs2-ls TT
> >>[ekw at ekow pvfs2]$ cp ~ekw/test.cc .
> >>[ekw at ekow pvfs2]$ ls -al
> >>total 28
> >>drwxrwxrwx 1 root root 4096 Oct 24 13:48 .
> >>drwxr-xr-x 3 root root 4096 Oct 24 13:22 ..
> >>drwxrwxrwx 1 root root 4096 Oct 24 13:30 lost+found
> >>-rw-rw-r-- 1 ekw ekw 112 Jan 2 1970 test.cc
> >>drwxrwxr-x 1 ekw ekw 4096 Oct 24 13:46 TestDir
> >>drwxrwxr-x 1 ekw ekw 4096 Oct 24 14:09 TT
> >>[ekw at ekow pvfs2]$ cat test.cc
> >>cat: test.cc: Permission denied
> >>[ekw at ekow pvfs2]$ ls TT
> >>ls: TT: Permission denied
> >>[ekw at ekow pvfs2]$ pvfs2-ls TT
> >>[ekw at ekow pvfs2]$
> >>-------------------------------------------------------------------------------------
> >>Note also that the timestamp on file "test.cc" copied into /mnt/pvfs2 is
> >>wrong.
> >>This was mentioned in the email of "Number Cruncher." The timestamp
> >>error and the
> >>"permission denied" error could be related. Has any one a solution yet ?
> >>---Ekow
> >>
> >>_______________________________________________
> >>PVFS2-users mailing list
> >>PVFS2-users at beowulf-underground.org
> >>http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
> >>
> >>
> >>
> >>
> >
> >------------------------------------------------------------------------
> >
> >Index: src/kernel/linux-2.6/acl.c
> >===================================================================
> >RCS file: /anoncvs/pvfs2/src/kernel/linux-2.6/acl.c,v
> >retrieving revision 1.6
> >diff -u -r1.6 acl.c
> >--- src/kernel/linux-2.6/acl.c 18 Oct 2005 16:29:48 -0000 1.6
> >+++ src/kernel/linux-2.6/acl.c 25 Oct 2005 23:02:26 -0000
> >@@ -59,7 +59,7 @@
> > if (size < 0 || (size % sizeof(pvfs2_acl_entry)) != 0)
> > {
> > pvfs2_error("pvfs2_acl_decode: Invalid value of size %d [should be a multiple of %d]\n",
> >- size, sizeof(pvfs2_acl_entry));
> >+ (int) size, (int) sizeof(pvfs2_acl_entry));
> > return ERR_PTR(-EINVAL);
> > }
> > count = size / sizeof(pvfs2_acl_entry);
> >@@ -129,7 +129,7 @@
> > if (!e)
> > {
> > pvfs2_error("pvfs2_acl_encode: Could not allocate %d bytes for acl encode\n",
> >- *size);
> >+ (int) *size);
> > return ERR_PTR(-ENOMEM);
> > }
> > ptr = e;
> >@@ -536,39 +536,67 @@
> > #ifdef HAVE_GENERIC_PERMISSION
> > return generic_permission(inode, mask, pvfs2_check_acl);
> > #else
> >- /* We sort of duplicate the code below from generic_permission */
> >+ /* We sort of duplicate the code below from generic_permission. */
> > int mode = inode->i_mode;
> > int error;
> >+
> >+ pvfs2_print("pvfs2_permission: mask = %x mode = %x current->fsuid = %x, inode->i_uid = %x\n",
> >+ mask, mode, current->fsuid, inode->i_uid);
> >+
> > /* No write access on a rdonly FS */
> > if ((mask & MAY_WRITE) && IS_RDONLY(inode) &&
> > (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)))
> >+ {
> >+ pvfs2_print("pvfs2_permission: cannot write to a read-only-file-system!\n");
> > return -EROFS;
> >+ }
> > /* No write access to any immutable files */
> >- if ((mask & MAY_WRITE) && IS_IMMUTABLE(inode))
> >+ if ((mask & MAY_WRITE) && IS_IMMUTABLE(inode))
> >+ {
> >+ pvfs2_error("pvfs2_permission: cannot write to an immutable file!\n");
> > return -EACCES;
> >- if (current->fsuid == inode->i_uid) {
> >- mode >>= 6;
> > }
> >- else if (get_acl_flag(inode) == 1) {
> >- /*
> >- * Access ACL won't work if we don't have group permission bits
> >- * set on the file!
> >- */
> >- if (((mode >> 3) & mask & S_IRWXO) != mask)
> >- goto check_groups;
> >- error = pvfs2_check_acl(inode, mask);
> >- /* ACL disallows access */
> >- if (error == -EACCES)
> >- goto check_capabilities;
> >- /* No ACLs present? */
> >- else if (error == -EAGAIN)
> >- goto check_groups;
> >- /* Any other error */
> >- return error;
> >+ /* Do permission checks only for lookups and opens */
> >+ if (!nd || !(nd->flags & (LOOKUP_OPEN | LOOKUP_ACCESS)))
> >+ {
> >+ return 0;
> >+ }
> >+ if (current->fsuid == inode->i_uid)
> >+ {
> >+ mode >>= 6;
> > }
> >+ else
> >+ {
> >+ if (get_acl_flag(inode) == 1)
> >+ {
> >+ /*
> >+ * Access ACL won't work if we don't have group permission bits
> >+ * set on the file!
> >+ */
> >+ if (((mode >> 3) & mask & S_IRWXO) != mask)
> >+ {
> >+ goto check_groups;
> >+ }
> >+ error = pvfs2_check_acl(inode, mask);
> >+ /* ACL disallows access */
> >+ if (error == -EACCES)
> >+ {
> >+ pvfs2_print("pvfs2_permission: acl disallowing access to file\n");
> >+ goto check_capabilities;
> >+ }
> >+ /* No ACLs present? */
> >+ else if (error == -EAGAIN)
> >+ {
> >+ goto check_groups;
> >+ }
> >+ /* Any other error */
> >+ return error;
> >+ }
> > check_groups:
> >- if (in_group_p(inode->i_gid))
> >- mode >>= 3;
> >+ if (in_group_p(inode->i_gid))
> >+ mode >>= 3;
> >+ }
> >+ pvfs2_print("pvfs2_permission: mode & mask & S_IRWXO = %d, mask = %d\n", mode & mask & S_IRWXO, mask);
> > if ((mode & mask & S_IRWXO) == mask)
> > return 0;
> > check_capabilities:
> >@@ -584,6 +612,7 @@
> > {
> > return 0;
> > }
> >+ pvfs2_print("pvfs2_permission: disallowing access\n");
> > return -EACCES;
> > #endif
> > }
> >Index: src/kernel/linux-2.6/devpvfs2-req.c
> >===================================================================
> >RCS file: /anoncvs/pvfs2/src/kernel/linux-2.6/devpvfs2-req.c,v
> >retrieving revision 1.52
> >diff -u -r1.52 devpvfs2-req.c
> >--- src/kernel/linux-2.6/devpvfs2-req.c 19 Oct 2005 20:58:35 -0000 1.52
> >+++ src/kernel/linux-2.6/devpvfs2-req.c 25 Oct 2005 23:02:26 -0000
> >@@ -387,7 +387,7 @@
> > {
> > pvfs2_print("WARNING: pvfs2_iocb from op"
> > "has invalid fields! %p, %p(%p), %d\n",
> >- x->buffer, x->op, op, x->bytes_to_be_copied);
> >+ x->buffer, x->op, op, (int) x->bytes_to_be_copied);
> > }
> > else
> > {
> >Index: src/kernel/linux-2.6/file.c
> >===================================================================
> >RCS file: /anoncvs/pvfs2/src/kernel/linux-2.6/file.c,v
> >retrieving revision 1.98
> >diff -u -r1.98 file.c
> >--- src/kernel/linux-2.6/file.c 19 Oct 2005 20:58:35 -0000 1.98
> >+++ src/kernel/linux-2.6/file.c 25 Oct 2005 23:02:26 -0000
> >@@ -629,7 +629,7 @@
> > to_free = 0;
> > }
> > ptr = iovecptr;
> >- pvfs2_print("pvfs2_file_readv reading %d@%Lu\n", count, *offset);
> >+ pvfs2_print("pvfs2_file_readv reading %d@%Lu\n", (int) count, Ld(*offset));
> > pvfs2_print("pvfs2_file_readv: new_nr_segs: %lu, seg_count: %u\n",
> > new_nr_segs, seg_count);
> > for (seg = 0; seg < new_nr_segs; seg++)
> >@@ -637,7 +637,7 @@
> > pvfs2_print("pvfs2_file_readv: %d) %p to %p [%d bytes]\n",
> > seg + 1, iovecptr[seg].iov_base,
> > iovecptr[seg].iov_base + iovecptr[seg].iov_len,
> >- iovecptr[seg].iov_len);
> >+ (int) iovecptr[seg].iov_len);
> > }
> > for (seg = 0; seg < seg_count; seg++)
> > {
> >@@ -729,7 +729,7 @@
> > return ret;
> > }
> > pvfs2_print("pvfs2_file_readv nr_segs %u, offset: %Lu each_count:%d\n",
> >- seg_array[seg], *offset, each_count);
> >+ (int) seg_array[seg], *offset, (int) each_count);
> > /*
> > * copy data to application by pushing it out to the iovec.
> > * Number of segments to copy so that we don't
> >@@ -884,7 +884,7 @@
> > to_free = 0;
> > }
> > ptr = iovecptr;
> >- pvfs2_print("pvfs2_file_writev writing %d@%Lu\n", count, *offset);
> >+ pvfs2_print("pvfs2_file_writev writing %d@%Lu\n", (int) count, *offset);
> > pvfs2_print("pvfs2_file_writev: new_nr_segs: %lu, seg_count: %u\n",
> > new_nr_segs, seg_count);
> > for (seg = 0; seg < new_nr_segs; seg++)
> >@@ -892,7 +892,7 @@
> > pvfs2_print("pvfs2_file_writev: %d) %p to %p [%d bytes]\n",
> > seg + 1, iovecptr[seg].iov_base,
> > iovecptr[seg].iov_base + iovecptr[seg].iov_len,
> >- iovecptr[seg].iov_len);
> >+ (int) iovecptr[seg].iov_len);
> > }
> > for (seg = 0; seg < seg_count; seg++)
> > {
> >@@ -939,7 +939,7 @@
> > new_op->upcall.req.io.count = each_count;
> > new_op->upcall.req.io.offset = *offset;
> > pvfs2_print("pvfs2_file_writev nr_segs %u, offset: %Lu each_count: %d\n",
> >- seg_array[seg], *offset, each_count);
> >+ seg_array[seg], *offset, (int) each_count);
> >
> > /*
> > * copy data from application by pulling it out of the iovec.
> >@@ -1133,7 +1133,7 @@
> > spin_unlock(&op->lock);
> > pvfs2_print("pvfs2_aio_retry: buffer %p,"
> > " size %d return %d bytes\n",
> >- x->buffer, x->bytes_to_be_copied, error);
> >+ x->buffer, (int) x->bytes_to_be_copied, (int) error);
> > if ((x->rw == PVFS_IO_WRITE) && error > 0)
> > {
> > struct inode *inode = iocb->ki_filp->f_mapping->host;
> >@@ -1430,7 +1430,7 @@
> > {
> > pvfs2_error("aio_read: cannot transfer (%d) bytes"
> > " (larger than block size %d)\n",
> >- count, pvfs_bufmap_size_query());
> >+ (int) count, pvfs_bufmap_size_query());
> > return -EINVAL;
> > }
> > filp = iocb->ki_filp;
> >@@ -1472,7 +1472,7 @@
> > if (error < 0)
> > {
> > pvfs2_error("pvfs2_file_aio_read: pvfs_bufmap_get() "
> >- " failure %d\n", ret);
> >+ " failure %d\n", (int) ret);
> > /* drop ref count and possibly de-allocate */
> > put_op(new_op);
> > goto out_error;
> >@@ -1535,7 +1535,7 @@
> > if ((error_exit != 0) && (ret == -EINTR))
> > {
> > pvfs2_print("pvfs2_file_aio_read: returning error %d "
> >- "(error_exit=%d)\n", ret, error_exit);
> >+ "(error_exit=%d)\n", (int) ret, error_exit);
> > }
> > else
> > {
> >@@ -1545,7 +1545,7 @@
> > "\n -- downcall status is %d, returning %d "
> > "(error_exit=%d)\n",
> > Lu(pvfs2_ino_to_handle(inode->i_ino)),
> >- dc_status, ret, error_exit);
> >+ dc_status, (int) ret, error_exit);
> > }
> > error = ret;
> > goto out_error;
> >@@ -1559,7 +1559,7 @@
> > }
> > if (ret)
> > {
> >- pvfs2_print("Failed to copy user buffer %d\n", ret);
> >+ pvfs2_print("Failed to copy user buffer %d\n", (int) ret);
> > new_op->downcall.status = -PVFS_EFAULT;
> > /* error is set in the goto target */
> > goto error_exit;
> >@@ -1600,7 +1600,7 @@
> > service_async_vfs_op(new_op);
> > pvfs2_print("pvfs2_file_aio_read: queued "
> > " read operation [%ld for %d]\n",
> >- (unsigned long) offset, count);
> >+ (unsigned long) offset, (int) count);
> > error = -EIOCBQUEUED;
> > /*
> > * All cleanups done upon completion
> >@@ -1686,7 +1686,7 @@
> > {
> > pvfs2_error("aio_write: cannot transfer (%d) bytes"
> > " (larger than block size %d)\n",
> >- count, pvfs_bufmap_size_query());
> >+ (int) count, pvfs_bufmap_size_query());
> > return -EINVAL;
> > }
> > error = -EINVAL;
> >@@ -1725,7 +1725,7 @@
> > if (error < 0)
> > {
> > pvfs2_error("pvfs2_file_aio_write: pvfs_bufmap_get()"
> >- " failure %d\n", ret);
> >+ " failure %d\n", (int) ret);
> > /* drop ref count and possibly de-allocate */
> > put_op(new_op);
> > goto out_error;
> >@@ -1746,7 +1746,7 @@
> > buffer_index, current_buf, count);
> > if (error < 0)
> > {
> >- pvfs2_print("Failed to copy user buffer %d\n", ret);
> >+ pvfs2_print("Failed to copy user buffer %d\n", (int) ret);
> > /* drop the buffer index */
> > pvfs_bufmap_put(buffer_index);
> > pvfs2_print("pvfs2_file_aio_read: pvfs_bufmap_put %d\n",
> >@@ -1809,7 +1809,7 @@
> > if ((error_exit != 0) && (ret == -EINTR))
> > {
> > pvfs2_print("pvfs2_file_aio_write: returning error %d "
> >- "(error_exit=%d)\n", ret, error_exit);
> >+ "(error_exit=%d)\n", (int) ret, error_exit);
> > }
> > else
> > {
> >@@ -1823,7 +1823,7 @@
> > (filp && filp->f_dentry
> > && filp->f_dentry->d_name.name ?
> > (char *)filp->f_dentry->d_name.name : "UNKNOWN"),
> >- dc_status, ret, error_exit);
> >+ dc_status, (int) ret, error_exit);
> > }
> > error = ret;
> > goto out_error;
> >@@ -1832,7 +1832,7 @@
> > wake_up_device_for_return(new_op);
> > pvfs_bufmap_put(buffer_index);
> > pvfs2_print("pvfs2_file_aio_read: pvfs_bufmap_put %d\n",
> >- buffer_index);
> >+ (int) buffer_index);
> > if (error > 0)
> > {
> > update_atime(inode);
> >@@ -1868,7 +1868,7 @@
> > service_async_vfs_op(new_op);
> > pvfs2_print("pvfs2_file_aio_write: queued "
> > " write operation [%ld for %d]\n",
> >- (unsigned long) offset, count);
> >+ (unsigned long) offset, (int) count);
> > error = -EIOCBQUEUED;
> > /*
> > * All cleanups done upon completion
> >Index: src/kernel/linux-2.6/pvfs2-kernel.h
> >===================================================================
> >RCS file: /anoncvs/pvfs2/src/kernel/linux-2.6/pvfs2-kernel.h,v
> >retrieving revision 1.103
> >diff -u -r1.103 pvfs2-kernel.h
> >--- src/kernel/linux-2.6/pvfs2-kernel.h 19 Oct 2005 20:58:35 -0000 1.103
> >+++ src/kernel/linux-2.6/pvfs2-kernel.h 25 Oct 2005 23:02:26 -0000
> >@@ -674,12 +674,12 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > ret = (etime ? etime : -EINVAL); \
> >- pvfs2_print("OP timed out. Returning %d\n", ret); \
> >+ pvfs2_print("OP timed out. Returning %d\n", (int)ret); \
> > } \
> > else if (ret == PVFS2_WAIT_SIGNAL_RECVD) \
> > { \
> > ret = (esig ? esig : -EINTR); \
> >- pvfs2_print("OP interrupted. Returning %d\n", ret); \
> >+ pvfs2_print("OP interrupted. Returning %d\n", (int)ret); \
> > } \
> > } while(0)
> >
> >@@ -697,7 +697,7 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > pvfs2_error("%s -- wait timed out (%x). " \
> >- "aborting attempt.\n", method, ret); \
> >+ "aborting attempt.\n", method, (int)ret); \
> > } \
> > goto error_exit; \
> > } \
> >@@ -714,7 +714,7 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > pvfs2_error("pvfs2_op_cancel: wait timed out " \
> >- "(%x). aborting attempt.\n", ret); \
> >+ "(%x). aborting attempt.\n", (int)ret); \
> > } \
> > goto error_exit; \
> > } \
> >@@ -732,7 +732,7 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > pvfs2_error("%s -- wait timed out (%x). " \
> >- "aborting attempt.\n", method,ret); \
> >+ "aborting attempt.\n", method,(int)ret); \
> > } \
> > goto error_exit; \
> > } \
> >@@ -763,7 +763,7 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > pvfs2_error("%s -- wait timed out (%x). aborting "\
> >- "retry attempts.\n", method, ret); \
> >+ "retry attempts.\n", method, (int) ret); \
> > } \
> > goto error_exit; \
> > } \
> >@@ -807,7 +807,7 @@
> > if (ret == PVFS2_WAIT_TIMEOUT_REACHED) \
> > { \
> > pvfs2_error("%s -- wait timed out (%x). aborting " \
> >- " retry attempts.\n", meth, ret); \
> >+ " retry attempts.\n", meth, (int)ret); \
> > } \
> > e = 1; \
> > goto error_exit; \
> >Index: src/kernel/linux-2.6/pvfs2-utils.c
> >===================================================================
> >RCS file: /anoncvs/pvfs2/src/kernel/linux-2.6/pvfs2-utils.c,v
> >retrieving revision 1.105
> >diff -u -r1.105 pvfs2-utils.c
> >--- src/kernel/linux-2.6/pvfs2-utils.c 11 Oct 2005 21:43:29 -0000 1.105
> >+++ src/kernel/linux-2.6/pvfs2-utils.c 25 Oct 2005 23:02:26 -0000
> >@@ -489,7 +489,7 @@
> > if (size < 0 || strlen(name) >= PVFS_MAX_XATTR_NAMELEN)
> > {
> > pvfs2_error("Invalid size (%d) or key length (%d)\n",
> >- size, strlen(name));
> >+ (int) size, (int) strlen(name));
> > return -EINVAL;
> > }
> > if (inode)
> >@@ -516,7 +516,7 @@
> > new_op->upcall.req.getxattr.key_sz =
> > strlen(new_op->upcall.req.getxattr.key) + 1;
> > pvfs2_print("pvfs2_inode_getxattr: key %s, key_sz %d\n",
> >- name, new_op->upcall.req.getxattr.key_sz);
> >+ name, (int) new_op->upcall.req.getxattr.key_sz);
> >
> > service_error_exit_op_with_timeout_retry(
> > new_op, "pvfs2_inode_getxattr", retries, error_exit,
> >@@ -553,7 +553,7 @@
> > length - 1);
> > ret = length - 1;
> > pvfs2_print("pvfs2_getxattr: key: %s, val_length: %d\n",
> >- name, ret);
> >+ name, (int) ret);
> > }
> > }
> > }
> >@@ -561,7 +561,7 @@
> > {
> > ret = -ENODATA; /* if no such keys exists we set this to be errno */
> > }
> >- pvfs2_print("pvfs2_inode_getxattr: returning %d\n", ret);
> >+ pvfs2_print("pvfs2_inode_getxattr: returning %d\n", (int) ret);
> >
> > /* when request is serviced properly, free req op struct */
> > op_release(new_op);
> >@@ -585,7 +585,7 @@
> > if (size < 0 || size >= PVFS_MAX_XATTR_VALUELEN || flags < 0)
> > {
> > pvfs2_error("pvfs2_inode_setxattr: bogus values of size(%d), flags(%d)\n",
> >- size, flags);
> >+ (int) size, flags);
> > return -EINVAL;
> > }
> > if (name == NULL || (size > 0 && value == NULL))
> >@@ -596,7 +596,7 @@
> > if (strlen(name) >= PVFS_MAX_XATTR_NAMELEN)
> > {
> > pvfs2_error("pvfs2_inode_setxattr: bogus key size (%d)\n",
> >- strlen(name));
> >+ (int) strlen(name));
> > return -EINVAL;
> > }
> > /* This is equivalent to a removexattr */
> >@@ -663,7 +663,7 @@
> > if (strlen(name) >= PVFS_MAX_XATTR_NAMELEN)
> > {
> > pvfs2_error("pvfs2_inode_removexattr: Invalid key length(%d)\n",
> >- strlen(name));
> >+ (int) strlen(name));
> > return -EINVAL;
> > }
> > if (inode)
> >
> >
>
>
More information about the PVFS2-users
mailing list