Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.35-rc4 74 lines 1.9 kB view raw
1/* 2 * Some non-inline ceph helpers 3 */ 4#include "types.h" 5 6/* 7 * return true if @layout appears to be valid 8 */ 9int ceph_file_layout_is_valid(const struct ceph_file_layout *layout) 10{ 11 __u32 su = le32_to_cpu(layout->fl_stripe_unit); 12 __u32 sc = le32_to_cpu(layout->fl_stripe_count); 13 __u32 os = le32_to_cpu(layout->fl_object_size); 14 15 /* stripe unit, object size must be non-zero, 64k increment */ 16 if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1))) 17 return 0; 18 if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1))) 19 return 0; 20 /* object size must be a multiple of stripe unit */ 21 if (os < su || os % su) 22 return 0; 23 /* stripe count must be non-zero */ 24 if (!sc) 25 return 0; 26 return 1; 27} 28 29 30int ceph_flags_to_mode(int flags) 31{ 32#ifdef O_DIRECTORY /* fixme */ 33 if ((flags & O_DIRECTORY) == O_DIRECTORY) 34 return CEPH_FILE_MODE_PIN; 35#endif 36#ifdef O_LAZY 37 if (flags & O_LAZY) 38 return CEPH_FILE_MODE_LAZY; 39#endif 40 if ((flags & O_APPEND) == O_APPEND) 41 flags |= O_WRONLY; 42 43 flags &= O_ACCMODE; 44 if ((flags & O_RDWR) == O_RDWR) 45 return CEPH_FILE_MODE_RDWR; 46 if ((flags & O_WRONLY) == O_WRONLY) 47 return CEPH_FILE_MODE_WR; 48 return CEPH_FILE_MODE_RD; 49} 50 51int ceph_caps_for_mode(int mode) 52{ 53 switch (mode) { 54 case CEPH_FILE_MODE_PIN: 55 return CEPH_CAP_PIN; 56 case CEPH_FILE_MODE_RD: 57 return CEPH_CAP_PIN | CEPH_CAP_FILE_SHARED | 58 CEPH_CAP_FILE_RD | CEPH_CAP_FILE_CACHE; 59 case CEPH_FILE_MODE_RDWR: 60 return CEPH_CAP_PIN | CEPH_CAP_FILE_SHARED | 61 CEPH_CAP_FILE_EXCL | 62 CEPH_CAP_FILE_RD | CEPH_CAP_FILE_CACHE | 63 CEPH_CAP_FILE_WR | CEPH_CAP_FILE_BUFFER | 64 CEPH_CAP_AUTH_SHARED | CEPH_CAP_AUTH_EXCL | 65 CEPH_CAP_XATTR_SHARED | CEPH_CAP_XATTR_EXCL; 66 case CEPH_FILE_MODE_WR: 67 return CEPH_CAP_PIN | CEPH_CAP_FILE_SHARED | 68 CEPH_CAP_FILE_EXCL | 69 CEPH_CAP_FILE_WR | CEPH_CAP_FILE_BUFFER | 70 CEPH_CAP_AUTH_SHARED | CEPH_CAP_AUTH_EXCL | 71 CEPH_CAP_XATTR_SHARED | CEPH_CAP_XATTR_EXCL; 72 } 73 return 0; 74}