diff options
| -rw-r--r-- | fs/ioctl.c | 10 | ||||
| -rw-r--r-- | include/asm-alpha/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-cris/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-i386/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-ia64/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-m68k/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-parisc/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-sh/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-sparc/ioctls.h | 1 | ||||
| -rw-r--r-- | include/asm-sparc64/ioctls.h | 1 |
10 files changed, 19 insertions, 0 deletions
diff --git a/fs/ioctl.c b/fs/ioctl.c index a36c61f18769..8d38a2f2539c 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -102,6 +102,16 @@ asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) filp->f_flags &= ~FASYNC; break; + case FIOQSIZE: + if (S_ISDIR(filp->f_dentry->d_inode->i_mode) || + S_ISREG(filp->f_dentry->d_inode->i_mode) || + S_ISLNK(filp->f_dentry->d_inode->i_mode)) { + loff_t res = inode_get_bytes(filp->f_dentry->d_inode); + error = copy_to_user((loff_t *)arg, &res, sizeof(res)) ? -EFAULT : 0; + } + else + error = -ENOTTY; + break; default: error = -ENOTTY; if (S_ISREG(filp->f_dentry->d_inode->i_mode)) diff --git a/include/asm-alpha/ioctls.h b/include/asm-alpha/ioctls.h index 2cad3d5a8ec2..a363c50ce6d7 100644 --- a/include/asm-alpha/ioctls.h +++ b/include/asm-alpha/ioctls.h @@ -9,6 +9,7 @@ #define FIONBIO _IOW('f', 126, int) #define FIONREAD _IOR('f', 127, int) #define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, loff_t) #define TIOCGETP _IOR('t', 8, struct sgttyb) #define TIOCSETP _IOW('t', 9, struct sgttyb) diff --git a/include/asm-cris/ioctls.h b/include/asm-cris/ioctls.h index 634628728762..21957ec44d7e 100644 --- a/include/asm-cris/ioctls.h +++ b/include/asm-cris/ioctls.h @@ -69,6 +69,7 @@ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ #define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */ #define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */ +#define FIOQSIZE 0x5460 /* Used for packet mode */ #define TIOCPKT_DATA 0 diff --git a/include/asm-i386/ioctls.h b/include/asm-i386/ioctls.h index 97b41f2feddb..ea0e6ae58c29 100644 --- a/include/asm-i386/ioctls.h +++ b/include/asm-i386/ioctls.h @@ -67,6 +67,7 @@ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ #define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */ #define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */ +#define FIOQSIZE 0x5460 /* Used for packet mode */ #define TIOCPKT_DATA 0 diff --git a/include/asm-ia64/ioctls.h b/include/asm-ia64/ioctls.h index 5e95e8b7f104..e727e4a67189 100644 --- a/include/asm-ia64/ioctls.h +++ b/include/asm-ia64/ioctls.h @@ -72,6 +72,7 @@ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ #define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */ #define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */ +#define FIOQSIZE 0x5460 /* Used for packet mode */ #define TIOCPKT_DATA 0 diff --git a/include/asm-m68k/ioctls.h b/include/asm-m68k/ioctls.h index 213bd58df199..89c0df1262ed 100644 --- a/include/asm-m68k/ioctls.h +++ b/include/asm-m68k/ioctls.h @@ -65,6 +65,7 @@ #define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ +#define FIOQSIZE 0x545E /* Used for packet mode */ #define TIOCPKT_DATA 0 diff --git a/include/asm-parisc/ioctls.h b/include/asm-parisc/ioctls.h index 332027f38424..9210a0f87c3f 100644 --- a/include/asm-parisc/ioctls.h +++ b/include/asm-parisc/ioctls.h @@ -67,6 +67,7 @@ #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ #define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */ #define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */ +#define FIOQSIZE 0x5460 /* Get exact space used by quota */ /* Used for packet mode */ #define TIOCPKT_DATA 0 diff --git a/include/asm-sh/ioctls.h b/include/asm-sh/ioctls.h index 5d3e2cd245f5..f535202e8380 100644 --- a/include/asm-sh/ioctls.h +++ b/include/asm-sh/ioctls.h @@ -9,6 +9,7 @@ #define FIONBIO _IOW('f', 126, int) #define FIONREAD _IOR('f', 127, int) #define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, loff_t) #define TCGETS 0x5401 #define TCSETS 0x5402 diff --git a/include/asm-sparc/ioctls.h b/include/asm-sparc/ioctls.h index aa2b9ea89a6a..531460ef91ff 100644 --- a/include/asm-sparc/ioctls.h +++ b/include/asm-sparc/ioctls.h @@ -86,6 +86,7 @@ #define FIONBIO _IOW('f', 126, int) #define FIONREAD _IOR('f', 127, int) #define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, loff_t) /* SCARY Rutgers local SunOS kernel hackery, perhaps I will support it * someday. This is completely bogus, I know... diff --git a/include/asm-sparc64/ioctls.h b/include/asm-sparc64/ioctls.h index ebec66679415..0c8068dc32a9 100644 --- a/include/asm-sparc64/ioctls.h +++ b/include/asm-sparc64/ioctls.h @@ -87,6 +87,7 @@ #define FIONBIO _IOW('f', 126, int) #define FIONREAD _IOR('f', 127, int) #define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, loff_t) /* SCARY Rutgers local SunOS kernel hackery, perhaps I will support it * someday. This is completely bogus, I know... |
