#ifndef FS_CEPH_IOCTL_H #define FS_CEPH_IOCTL_H #include #include #define CEPH_IOCTL_MAGIC 0x97 /* * CEPH_IOC_GET_LAYOUT - get file layout or dir layout policy * CEPH_IOC_SET_LAYOUT - set file layout * CEPH_IOC_SET_LAYOUT_POLICY - set dir layout policy * * The file layout specifies how file data is striped over objects in * the distributed object store, which object pool they belong to (if * it differs from the default), and an optional 'preferred osd' to * store them on. * * Files get a new layout based on the policy set on the containing * directory or one of its ancestors. The GET_LAYOUT ioctl will let * you examine the layout for a file or the policy on a directory. * * SET_LAYOUT will let you set a layout on a newly created file. This * only works immediately after the file is created and before any * data is written to it. * * SET_LAYOUT_POLICY will let you set a layout policy (default layout) * on a directory that will apply to any new files created in that * directory (or any child directory that doesn't specify a layout of * its own). */ /* use u64 to align sanely on all archs */ struct ceph_ioctl_layout { __u64 stripe_unit, stripe_count, object_size; __u64 data_pool; /* obsolete. new values ignored, always return -1 */ __s64 preferred_osd; }; #define CEPH_IOC_GET_LAYOUT _IOR(CEPH_IOCTL_MAGIC, 1, \ struct ceph_ioctl_layout) #define CEPH_IOC_SET_LAYOUT _IOW(CEPH_IOCTL_MAGIC, 2, \ struct ceph_ioctl_layout) #define CEPH_IOC_SET_LAYOUT_POLICY _IOW(CEPH_IOCTL_MAGIC, 5, \ struct ceph_ioctl_layout) /* * CEPH_IOC_GET_DATALOC - get location of file data in the cluster * * Extract identity, address of the OSD and object storing a given * file offset. */ struct ceph_ioctl_dataloc { __u64 file_offset; /* in+out: file offset */ __u64 object_offset; /* out: offset in object */ __u64 object_no; /* out: object # */ __u64 object_size; /* out: object size */ char object_name[64]; /* out: object name */ __u64 block_offset; /* out: offset in block */ __u64 block_size; /* out: block length */ __s64 osd; /* out: osd # */ struct sockaddr_storage osd_addr; /* out: osd address */ }; #define CEPH_IOC_GET_DATALOC _IOWR(CEPH_IOCTL_MAGIC, 3, \ struct ceph_ioctl_dataloc) /* * CEPH_IOC_LAZYIO - relax consistency * * Normally Ceph switches to synchronous IO when multiple clients have * the file open (and or more for write). Reads and writes bypass the * page cache and go directly to the OSD. Setting this flag on a file * descriptor will allow buffered IO for this file in cases where the * application knows it won't interfere with other nodes (or doesn't * care). */ #define CEPH_IOC_LAZYIO _IO(CEPH_IOCTL_MAGIC, 4) /* * CEPH_IOC_SYNCIO - force synchronous IO * * This ioctl sets a file flag that forces the synchronous IO that * bypasses the page cache, even if it is not necessary. This is * essentially the opposite behavior of IOC_LAZYIO. This forces the * same read/write path as a file opened by multiple clients when one * or more of those clients is opened for write. * * Note that this type of sync IO takes a different path than a file * opened with O_SYNC/D_SYNC (writes hit the page cache and are * immediately flushed on page boundaries). It is very similar to * O_DIRECT (writes bypass the page cache) excep that O_DIRECT writes * are not copied (user page must remain stable) and O_DIRECT writes * have alignment restrictions (on the buffer and file offset). */ #define CEPH_IOC_SYNCIO _IO(CEPH_IOCTL_MAGIC, 5) #endif ='6'>6space:mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-25 14:30:04 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-25 14:30:04 -0800
commit3ddc76dfc786cc6f87852693227fb0b1f124f807 (patch)
tree8192b4721e05cf6823087f9696db8c0c8f144b02 /include/dt-bindings/clk
parentb272f732f888d4cf43c943a40c9aaa836f9b7431 (diff)
parent1f3a8e49d8f28f498b8694464623ac20aebfe62a (diff)
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer type cleanups from Thomas Gleixner: "This series does a tree wide cleanup of types related to timers/timekeeping. - Get rid of cycles_t and use a plain u64. The type is not really helpful and caused more confusion than clarity - Get rid of the ktime union. The union has become useless as we use the scalar nanoseconds storage unconditionally now. The 32bit timespec alike storage got removed due to the Y2038 limitations some time ago. That leaves the odd union access around for no reason. Clean it up. Both changes have been done with coccinelle and a small amount of manual mopping up" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: ktime: Get rid of ktime_equal() ktime: Cleanup ktime_set() usage ktime: Get rid of the union clocksource: Use a plain u64 instead of cycle_t
Diffstat (limited to 'include/dt-bindings/clk')