diff options
author | Ned A. Bass <[email protected]> | 2011-05-09 12:31:56 -0700 |
---|---|---|
committer | Ned A. Bass <[email protected]> | 2011-05-09 13:35:07 -0700 |
commit | aa6d8c10864dd532b1577a84a22da2eaee10fcfd (patch) | |
tree | 3f07ed9010213d4184c0ce21b92e9c1098059f3c /module/zfs/zpl_inode.c | |
parent | 3117dd0b9005eb76e483b9772c493883b82998bb (diff) |
Don't store rdev in SA for FIFOs and sockets
Update the handling of named pipes and sockets to be consistent with
other platforms with regard to the rdev attribute. While all ZFS
ipmlementations store the rdev for device files in a system attribute
(SA), this is not the case for FIFOs and sockets. Indeed, Linux always
passes rdev=0 to mknod() for FIFOs and sockets, so the value is not
needed. Add an ASSERT that rdev==0 for FIFOs and sockets to detect if
the expected behavior ever changes.
Closes #216
Diffstat (limited to 'module/zfs/zpl_inode.c')
-rw-r--r-- | module/zfs/zpl_inode.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/module/zfs/zpl_inode.c b/module/zfs/zpl_inode.c index 029a4038b..8376673f1 100644 --- a/module/zfs/zpl_inode.c +++ b/module/zfs/zpl_inode.c @@ -85,6 +85,13 @@ zpl_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev) vattr_t *vap; int error; + /* + * We currently expect Linux to supply rdev=0 for all sockets + * and fifos, but we want to know if this behavior ever changes. + */ + if (S_ISSOCK(mode) || S_ISFIFO(mode)) + ASSERT(rdev == 0); + crhold(cr); vap = kmem_zalloc(sizeof(vattr_t), KM_SLEEP); vap->va_mode = mode; |