EISDIR cleanup

Pavel Machek (pavel@Elf.mj.gts.cz)
Thu, 25 Dec 1997 13:34:33 +0100


Hi!

In almost all filesystems there's a function that only returns
-EISDIR. I call this unneccessary code duplication. This patch kills
it. Please apply.

Pavel

diff -ur clean/fs/affs/dir.c linux/fs/affs/dir.c
--- clean/fs/affs/dir.c Fri Dec 5 12:00:35 1997
+++ linux/fs/affs/dir.c Mon Dec 8 20:03:30 1997
@@ -25,11 +25,10 @@
#include <linux/amigaffs.h>

static int affs_readdir(struct file *, void *, filldir_t);
-static ssize_t affs_dir_read(struct file *, char *, size_t, loff_t *);

static struct file_operations affs_dir_operations = {
NULL, /* lseek - default */
- affs_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
affs_readdir, /* readdir */
NULL, /* poll - default */
@@ -65,12 +64,6 @@
NULL, /* updatepage */
NULL /* revalidate */
};
-
-static ssize_t
-affs_dir_read(struct file *filp, char *buf, size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}

static int
affs_readdir(struct file *filp, void *dirent, filldir_t filldir)
diff -ur clean/fs/bad_inode.c linux/fs/bad_inode.c
--- clean/fs/bad_inode.c Sun Oct 12 18:45:12 1997
+++ linux/fs/bad_inode.c Mon Dec 8 20:03:30 1997
@@ -24,6 +24,11 @@
return -EIO;
}

+int return_EISDIR(void)
+{
+ return -EISDIR;
+}
+
#define EIO_ERROR ((void *) (return_EIO))

static struct file_operations bad_file_ops =
diff -ur clean/fs/ext2/dir.c linux/fs/ext2/dir.c
--- clean/fs/ext2/dir.c Tue Oct 21 17:57:29 1997
+++ linux/fs/ext2/dir.c Mon Dec 8 20:03:30 1997
@@ -26,17 +26,11 @@
#include <linux/sched.h>
#include <linux/stat.h>

-static ssize_t ext2_dir_read (struct file * filp, char * buf,
- size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}
-
static int ext2_readdir(struct file *, void *, filldir_t);

static struct file_operations ext2_dir_operations = {
NULL, /* lseek - default */
- ext2_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
ext2_readdir, /* readdir */
NULL, /* poll - default */
diff -ur clean/fs/fat/dir.c linux/fs/fat/dir.c
--- clean/fs/fat/dir.c Sat Nov 8 20:58:11 1997
+++ linux/fs/fat/dir.c Mon Dec 8 20:03:30 1997
@@ -31,15 +31,9 @@

#define PRINTK(X)

-static ssize_t fat_dir_read(struct file * filp, char * buf,
- size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}
-
struct file_operations fat_dir_operations = {
NULL, /* lseek - default */
- fat_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
fat_readdir, /* readdir */
NULL, /* select v2.0.x/poll v2.1.x - default */
diff -ur clean/fs/hpfs/hpfs_fs.c linux/fs/hpfs/hpfs_fs.c
--- clean/fs/hpfs/hpfs_fs.c Tue Nov 18 19:36:45 1997
+++ linux/fs/hpfs/hpfs_fs.c Mon Dec 8 20:03:30 1997
@@ -187,8 +187,6 @@

/* directory ops */

-static ssize_t hpfs_dir_read(struct file *filp, char *buf,
- size_t count, loff_t *ppos);
static int hpfs_readdir(struct file *filp,
void *dirent, filldir_t filldir);
static int hpfs_lookup(struct inode *, struct dentry *);
@@ -196,7 +194,7 @@
static const struct file_operations hpfs_dir_ops =
{
NULL, /* lseek - default */
- hpfs_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
hpfs_readdir, /* readdir */
NULL, /* poll - default */
@@ -1580,12 +1578,6 @@
return 0;
}

-static ssize_t hpfs_dir_read(struct file *filp, char *buf,
- size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}
-
/* Return the dnode pointer in a directory fnode */

static dnode_secno fnode_dno(kdev_t dev, ino_t ino)
diff -ur clean/fs/isofs/dir.c linux/fs/isofs/dir.c
--- clean/fs/isofs/dir.c Fri Dec 19 10:42:47 1997
+++ linux/fs/isofs/dir.c Fri Dec 19 10:29:33 1997
@@ -29,7 +29,7 @@
static struct file_operations isofs_dir_operations =
{
NULL, /* lseek - default */
- NULL, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
isofs_readdir, /* readdir */
NULL, /* poll - default */
diff -ur clean/fs/minix/dir.c linux/fs/minix/dir.c
--- clean/fs/minix/dir.c Tue Oct 21 17:57:29 1997
+++ linux/fs/minix/dir.c Mon Dec 8 20:03:30 1997
@@ -14,17 +14,11 @@

#include <asm/uaccess.h>

-static ssize_t minix_dir_read(struct file * filp, char * buf,
- size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}
-
static int minix_readdir(struct file *, void *, filldir_t);

static struct file_operations minix_dir_operations = {
NULL, /* lseek - default */
- minix_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
minix_readdir, /* readdir */
NULL, /* poll - default */
diff -ur clean/fs/nfs/dir.c linux/fs/nfs/dir.c
--- clean/fs/nfs/dir.c Thu Dec 25 12:40:53 1997
+++ linux/fs/nfs/dir.c Thu Dec 25 11:52:04 1997
@@ -56,7 +56,6 @@
static int nfs_safe_remove(struct dentry *);

static int nfs_dir_open(struct inode *, struct file *);
-static ssize_t nfs_dir_read(struct file *, char *, size_t, loff_t *);
static int nfs_readdir(struct file *, void *, filldir_t);
static int nfs_lookup(struct inode *, struct dentry *);
static int nfs_create(struct inode *, struct dentry *, int);
@@ -71,7 +70,7 @@

static struct file_operations nfs_dir_operations = {
NULL, /* lseek - default */
- nfs_dir_read, /* read - bad */
+ EISDIR_ERROR, /* read - bad */
NULL, /* write - bad */
nfs_readdir, /* readdir */
NULL, /* select - default */
@@ -110,12 +109,6 @@
{
dfprintk(VFS, "NFS: nfs_dir_open(%x/%ld)\n", dir->i_dev, dir->i_ino);
return nfs_revalidate_inode(NFS_SERVER(dir), dir);
-}
-
-static ssize_t
-nfs_dir_read(struct file *filp, char *buf, size_t count, loff_t *ppos)
-{
- return -EISDIR;
}

static struct nfs_dirent dircache[NFS_MAX_DIRCACHE];
diff -ur clean/fs/smbfs/dir.c linux/fs/smbfs/dir.c
--- clean/fs/smbfs/dir.c Thu Dec 25 12:39:48 1997
+++ linux/fs/smbfs/dir.c Sat Dec 20 13:40:24 1997
@@ -18,7 +18,6 @@
/* #define pr_debug printk */
#define SMBFS_MAX_AGE 5*HZ

-static ssize_t smb_dir_read(struct file *, char *, size_t, loff_t *);
static int smb_readdir(struct file *, void *, filldir_t);
static int smb_dir_open(struct inode *, struct file *);

@@ -33,7 +32,7 @@
static struct file_operations smb_dir_operations =
{
NULL, /* lseek - default */
- smb_dir_read, /* read - bad */
+ EISDIR_ERROR, /* read - bad */
NULL, /* write - bad */
smb_readdir, /* readdir */
NULL, /* poll - default */
@@ -67,12 +66,6 @@
NULL, /* updatepage */
smb_revalidate_inode, /* revalidate */
};
-
-static ssize_t
-smb_dir_read(struct file *filp, char *buf, size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}

static int
smb_readdir(struct file *filp, void *dirent, filldir_t filldir)
diff -ur clean/fs/sysv/dir.c linux/fs/sysv/dir.c
--- clean/fs/sysv/dir.c Tue Oct 21 17:57:30 1997
+++ linux/fs/sysv/dir.c Mon Dec 8 20:03:30 1997
@@ -21,17 +21,11 @@

#include <asm/uaccess.h>

-static ssize_t sysv_dir_read(struct file * filp, char * buf,
- size_t count, loff_t *ppos)
-{
- return -EISDIR;
-}
-
static int sysv_readdir(struct file *, void *, filldir_t);

static struct file_operations sysv_dir_operations = {
NULL, /* lseek - default */
- sysv_dir_read, /* read */
+ EISDIR_ERROR, /* read */
NULL, /* write - bad */
sysv_readdir, /* readdir */
NULL, /* poll - default */
diff -ur clean/include/linux/fs.h linux/include/linux/fs.h
--- clean/include/linux/fs.h Thu Dec 25 12:40:55 1997
+++ linux/include/linux/fs.h Thu Dec 25 11:52:06 1997
@@ -832,6 +828,11 @@
extern int inode_change_ok(struct inode *, struct iattr *);
extern void inode_setattr(struct inode *, struct iattr *);
extern int notify_change(struct inode * inode, struct iattr * attr);
+
+/* This was common to many filesystems, thus moved here (pavel@atrey) */
+
+int return_EISDIR(void);
+#define EISDIR_ERROR ((void *) return_EISDIR)

/* kludge to get SCSI modules working */
#include <linux/minix_fs.h>

-- 
I'm really pavel@atrey.karlin.mff.cuni.cz. 	   Pavel
Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-).