aboutsummaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Expand)AuthorAge
* fix file specification in commentsUwe Zeisberger2006-10-03
* [PATCH] low performance of lib/sort.ckeios2006-10-03
* [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ referencesArnd Bergmann2006-10-02
* [PATCH] introduce kernel_execveArnd Bergmann2006-10-02
* [PATCH] cpumask: add highest_possible_node_idGreg Banks2006-10-02
* [PATCH] Linux Kernel Dump Test ModuleAnkita Garg2006-10-02
* [PATCH] make genpool allocator adhere to kernel-doc standardsDean Nelson2006-10-02
* [PATCH] LIB: add gen_pool_destroy()Steve Wise2006-10-02
* [PATCH] Generic ioremap_page_range: flush_cache_vmapHaavard Skinnemoen2006-10-01
* [PATCH] Generic ioremap_page_range: implementationHaavard Skinnemoen2006-10-01
* [PATCH] list_del-debug fixAndrew Morton2006-10-01
* [PATCH] rbtree: fixed reversed RB_EMPTY_NODE and rb_next/prevJens Axboe2006-09-30
* [PATCH] lib/ts_fsm.c: constify structsAndreas Mohr2006-09-29
* [PATCH] lib/rwsem.c: un-inline rwsem_down_failed_common()Andreas Mohr2006-09-29
* [PATCH] spinlock_debug: don't recompute (jiffies_per_loop * HZ) in spinloopChuck Ebbert2006-09-29
* [PATCH] list_del debug checkManfred Spraul2006-09-29
* [PATCH] Debug variants of linked list macrosDave Jones2006-09-29
* sh: Enable verbose BUG() support.Paul Mundt2006-09-27
* sh: Use generic CONFIG_FRAME_POINTER.Paul Mundt2006-09-27
* Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6Linus Torvalds2006-09-26
|\
| * [PATCH] optimize hweight64 for x86_64Andi Kleen2006-09-26
| * [PATCH] Don't force frame pointers for lockdepAndi Kleen2006-09-26
* | Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6Linus Torvalds2006-09-26
|\ \
| * | Driver core: Don't call put methods while holding a spinlockAlan Stern2006-09-26
| * | add CONFIG_ENABLE_MUST_CHECKAndrew Morton2006-09-26
| * | kobject: must_check fixesRandy Dunlap2006-09-26
| |/
* / [PATCH] avr32 architectureHaavard Skinnemoen2006-09-26
|/
* [PATCH] fix missing ifdefs in syscall classes hookup for generic targetsAl Viro2006-09-22
* [PATCH] syscall class hookup for all normal targetsAl Viro2006-09-12
* [TEXTSEARCH]: Fix Boyer Moore initialization bugMichael Rash2006-08-22
* [PATCH] disable debugging version of write_lock()Andrew Morton2006-08-06
* PCI: docking station: remove dock ueventsKristen Carlson Accardi2006-08-03
* [PATCH] Fix ppc32 zImage inflatePeter Korsgaard2006-07-31
* [PATCH] let the the lockdep options depend on DEBUG_KERNELAdrian Bunk2006-07-15
* [PATCH] Convert idr's internal locking to _irqsave variantRoland Dreier2006-07-15
* [PATCH] lockdep: kconfigIngo Molnar2006-07-03
* [PATCH] lockdep: prove spinlock rwlock locking correctnessIngo Molnar2006-07-03
* [PATCH] lockdep: prove rwsem locking correctnessIngo Molnar2006-07-03
* [PATCH] lockdep: allow read_lock() recursion of same classIngo Molnar2006-07-03
* [PATCH] lockdep: coreIngo Molnar2006-07-03
* [PATCH] lockdep: locking API self testsIngo Molnar2006-07-03
* [PATCH] lockdep: s390 CONFIG_FRAME_POINTER supportHeiko Carstens2006-07-03
* [PATCH] lockdep: stacktrace subsystem, coreIngo Molnar2006-07-03
* [PATCH] lockdep: better lock debuggingIngo Molnar2006-07-03
* [PATCH] lockdep: remove mutex deadlock checking codeIngo Molnar2006-07-03
* [PATCH] lockdep: clean up rwsemsIngo Molnar2006-07-03
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivialLinus Torvalds2006-06-30
|\
| * Remove obsolete #include <linux/config.h>Jörn Engel2006-06-30
* | merge linus into release branchLen Brown2006-06-29
|\|
| * Fix vsnprintf off-by-one bugLinus Torvalds2006-06-28
span> * uint32_t odm_mirror_cnt; * pnfs_osd_raid_algorithm4 odm_raid_algorithm; * }; */ struct pnfs_osd_data_map { u32 odm_num_comps; u64 odm_stripe_unit; u32 odm_group_width; u32 odm_group_depth; u32 odm_mirror_cnt; u32 odm_raid_algorithm; }; /* struct pnfs_osd_objid4 { * deviceid4 oid_device_id; * uint64_t oid_partition_id; * uint64_t oid_object_id; * }; */ struct pnfs_osd_objid { struct nfs4_deviceid oid_device_id; u64 oid_partition_id; u64 oid_object_id; }; /* For printout. I use: * kprint("dev(%llx:%llx)", _DEVID_LO(pointer), _DEVID_HI(pointer)); * BE style */ #define _DEVID_LO(oid_device_id) \ (unsigned long long)be64_to_cpup((__be64 *)(oid_device_id)->data) #define _DEVID_HI(oid_device_id) \ (unsigned long long)be64_to_cpup(((__be64 *)(oid_device_id)->data) + 1) enum pnfs_osd_version { PNFS_OSD_MISSING = 0, PNFS_OSD_VERSION_1 = 1, PNFS_OSD_VERSION_2 = 2 }; struct pnfs_osd_opaque_cred { u32 cred_len; void *cred; }; enum pnfs_osd_cap_key_sec { PNFS_OSD_CAP_KEY_SEC_NONE = 0, PNFS_OSD_CAP_KEY_SEC_SSV = 1, }; /* struct pnfs_osd_object_cred4 { * pnfs_osd_objid4 oc_object_id; * pnfs_osd_version4 oc_osd_version; * pnfs_osd_cap_key_sec4 oc_cap_key_sec; * opaque oc_capability_key<>; * opaque oc_capability<>; * }; */ struct pnfs_osd_object_cred { struct pnfs_osd_objid oc_object_id; u32 oc_osd_version; u32 oc_cap_key_sec; struct pnfs_osd_opaque_cred oc_cap_key; struct pnfs_osd_opaque_cred oc_cap; }; /* struct pnfs_osd_layout4 { * pnfs_osd_data_map4 olo_map; * uint32_t olo_comps_index; * pnfs_osd_object_cred4 olo_components<>; * }; */ struct pnfs_osd_layout { struct pnfs_osd_data_map olo_map; u32 olo_comps_index; u32 olo_num_comps; struct pnfs_osd_object_cred *olo_comps; }; /* Device Address */ enum pnfs_osd_targetid_type { OBJ_TARGET_ANON = 1, OBJ_TARGET_SCSI_NAME = 2, OBJ_TARGET_SCSI_DEVICE_ID = 3, }; /* union pnfs_osd_targetid4 switch (pnfs_osd_targetid_type4 oti_type) { * case OBJ_TARGET_SCSI_NAME: * string oti_scsi_name<>; * * case OBJ_TARGET_SCSI_DEVICE_ID: * opaque oti_scsi_device_id<>; * * default: * void; * }; * * union pnfs_osd_targetaddr4 switch (bool ota_available) { * case TRUE: * netaddr4 ota_netaddr; * case FALSE: * void; * }; * * struct pnfs_osd_deviceaddr4 { * pnfs_osd_targetid4 oda_targetid; * pnfs_osd_targetaddr4 oda_targetaddr; * uint64_t oda_lun; * opaque oda_systemid<>; * pnfs_osd_object_cred4 oda_root_obj_cred; * opaque oda_osdname<>; * }; */ struct pnfs_osd_targetid { u32 oti_type; struct nfs4_string oti_scsi_device_id; }; /* struct netaddr4 { * // see struct rpcb in RFC1833 * string r_netid<>; // network id * string r_addr<>; // universal address * }; */ struct pnfs_osd_net_addr { struct nfs4_string r_netid; struct nfs4_string r_addr; }; struct pnfs_osd_targetaddr { u32 ota_available; struct pnfs_osd_net_addr ota_netaddr; }; struct pnfs_osd_deviceaddr { struct pnfs_osd_targetid oda_targetid; struct pnfs_osd_targetaddr oda_targetaddr; u8 oda_lun[8]; struct nfs4_string oda_systemid; struct pnfs_osd_object_cred oda_root_obj_cred; struct nfs4_string oda_osdname; }; /* LAYOUTCOMMIT: layoutupdate */ /* union pnfs_osd_deltaspaceused4 switch (bool dsu_valid) { * case TRUE: * int64_t dsu_delta; * case FALSE: * void; * }; * * struct pnfs_osd_layoutupdate4 { * pnfs_osd_deltaspaceused4 olu_delta_space_used; * bool olu_ioerr_flag; * }; */ struct pnfs_osd_layoutupdate { u32 dsu_valid; s64 dsu_delta; u32 olu_ioerr_flag; }; /* LAYOUTRETURN: I/O Rrror Report */ enum pnfs_osd_errno { PNFS_OSD_ERR_EIO = 1, PNFS_OSD_ERR_NOT_FOUND = 2, PNFS_OSD_ERR_NO_SPACE = 3, PNFS_OSD_ERR_BAD_CRED = 4, PNFS_OSD_ERR_NO_ACCESS = 5, PNFS_OSD_ERR_UNREACHABLE = 6, PNFS_OSD_ERR_RESOURCE = 7 }; /* struct pnfs_osd_ioerr4 { * pnfs_osd_objid4 oer_component; * length4 oer_comp_offset; * length4 oer_comp_length; * bool oer_iswrite; * pnfs_osd_errno4 oer_errno; * }; */ struct pnfs_osd_ioerr { struct pnfs_osd_objid oer_component; u64 oer_comp_offset; u64 oer_comp_length; u32 oer_iswrite; u32 oer_errno; }; /* OSD XDR Client API */ /* Layout helpers */ /* Layout decoding is done in two parts: * 1. First Call pnfs_osd_xdr_decode_layout_map to read in only the header part * of the layout. @iter members need not be initialized. * Returned: * @layout members are set. (@layout->olo_comps set to NULL). * * Zero on success, or negative error if passed xdr is broken. * * 2. 2nd Call pnfs_osd_xdr_decode_layout_comp() in a loop until it returns * false, to decode the next component. * Returned: * true if there is more to decode or false if we are done or error. * * Example: * struct pnfs_osd_xdr_decode_layout_iter iter; * struct pnfs_osd_layout layout; * struct pnfs_osd_object_cred comp; * int status; * * status = pnfs_osd_xdr_decode_layout_map(&layout, &iter, xdr); * if (unlikely(status)) * goto err; * while(pnfs_osd_xdr_decode_layout_comp(&comp, &iter, xdr, &status)) { * // All of @comp strings point to inside the xdr_buffer * // or scrach buffer. Copy them out to user memory eg. * copy_single_comp(dest_comp++, &comp); * } * if (unlikely(status)) * goto err; */ struct pnfs_osd_xdr_decode_layout_iter { unsigned total_comps; unsigned decoded_comps; }; extern int pnfs_osd_xdr_decode_layout_map(struct pnfs_osd_layout *layout, struct pnfs_osd_xdr_decode_layout_iter *iter, struct xdr_stream *xdr); extern bool pnfs_osd_xdr_decode_layout_comp(struct pnfs_osd_object_cred *comp, struct pnfs_osd_xdr_decode_layout_iter *iter, struct xdr_stream *xdr, int *err); /* Device Info helpers */ /* Note: All strings inside @deviceaddr point to space inside @p. * @p should stay valid while @deviceaddr is in use. */ extern void pnfs_osd_xdr_decode_deviceaddr( struct pnfs_osd_deviceaddr *deviceaddr, __be32 *p); /* layoutupdate (layout_commit) xdr helpers */ extern int pnfs_osd_xdr_encode_layoutupdate(struct xdr_stream *xdr, struct pnfs_osd_layoutupdate *lou); /* osd_ioerror encoding (layout_return) */ extern __be32 *pnfs_osd_xdr_ioerr_reserve_space(struct xdr_stream *xdr); extern void pnfs_osd_xdr_encode_ioerr(__be32 *p, struct pnfs_osd_ioerr *ioerr); #endif /* __PNFS_OSD_XDR_H__ */