summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/ioctl.c10
-rw-r--r--include/asm-alpha/ioctls.h1
-rw-r--r--include/asm-cris/ioctls.h1
-rw-r--r--include/asm-i386/ioctls.h1
-rw-r--r--include/asm-ia64/ioctls.h1
-rw-r--r--include/asm-m68k/ioctls.h1
-rw-r--r--include/asm-parisc/ioctls.h1
-rw-r--r--include/asm-sh/ioctls.h1
-rw-r--r--include/asm-sparc/ioctls.h1
-rw-r--r--include/asm-sparc64/ioctls.h1
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...