summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 19:08:33 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 19:08:33 -0800
commit2d80cb2a5e022225b9512ccc98f7979cc4b92ce8 (patch)
treea7f247ba424b5366ce443b3d9cb5b4c7f6538e3f /include/linux
parent75b566af5cc6f64f9ab5b66608ff8ce18098a2b4 (diff)
v2.4.5.8 -> v2.4.5.9
- make sure "sync()" doesn't effectively lock up the machine by overloading all the IO resources - fix up some network memory allocations that don't wan tto wait on IO. - merge with Alan (including MIPS update) - Jeff Garzik: network driver updates. - Al Viro: System V FS update (write capability, page cache, mondo cleanups) - Kai Germaschewski: ISDN cleanups, TURBOPAM driver by Stelian Pop - Ben Fennema: UDF update (time handling, i_blocks fix) - Neil Brown: md error handling improvements, knfsd file handle compatibility - Paul Mackerras: PPC update - Jakub Jelinek: fix up kernel linker scripts to accept .rodata better - Patrick Mochel: fix PME handling in pci_enable_wake() - Chris Mason: reiserfs PF_MEMALLOC handling
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/agp_backend.h7
-rw-r--r--include/linux/atmdev.h7
-rw-r--r--include/linux/isdn.h19
-rw-r--r--include/linux/isdn/tpam.h56
-rw-r--r--include/linux/isdnif.h3
-rw-r--r--include/linux/nfsd/nfsd.h8
-rw-r--r--include/linux/nfsd/nfsfh.h2
-rw-r--r--include/linux/pci.h2
-rw-r--r--include/linux/pci_ids.h55
-rw-r--r--include/linux/sysv_fs.h229
-rw-r--r--include/linux/sysv_fs_i.h2
-rw-r--r--include/linux/sysv_fs_sb.h57
-rw-r--r--include/linux/udf_fs.h4
-rw-r--r--include/linux/udf_fs_i.h3
-rw-r--r--include/linux/udf_udf.h4
15 files changed, 298 insertions, 160 deletions
diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h
index 221be1c68bca..63619c2eb6f6 100644
--- a/include/linux/agp_backend.h
+++ b/include/linux/agp_backend.h
@@ -45,7 +45,7 @@ enum chipset_type {
INTEL_BX,
INTEL_GX,
INTEL_I810,
- INTEL_I815,
+ INTEL_I815,
INTEL_I840,
INTEL_I850,
VIA_GENERIC,
@@ -65,7 +65,10 @@ enum chipset_type {
ALI_M1641,
ALI_M1647,
ALI_M1651,
- ALI_GENERIC
+ ALI_GENERIC,
+ SVWRKS_HE,
+ SVWRKS_LE,
+ SVWRKS_GENERIC
};
typedef struct _agp_version {
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h
index ef8931cd7b5f..2b14cb90f604 100644
--- a/include/linux/atmdev.h
+++ b/include/linux/atmdev.h
@@ -22,6 +22,13 @@
max cell rate: 353207.547 cells/sec */
#define ATM_25_PCR ((25600000/8-8000)/54)
/* 25 Mbps ATM cell rate (59111) */
+#define ATM_OC12_PCR (622080000/1080*1040/8/53)
+ /* OC12 link rate: 622080000 bps
+ SONET overhead: /1080*1040
+ bits per cell: /8/53
+ max cell rate: 1412830.188 cells/sec */
+#define ATM_DS3_PCR (8000*12)
+ /* DS3: 12 cells in a 125 usec time slot */
#define ATM_PDU_OVHD 0 /* number of bytes to charge against buffer
quota per PDU */
diff --git a/include/linux/isdn.h b/include/linux/isdn.h
index bb57005b1e07..18772903d770 100644
--- a/include/linux/isdn.h
+++ b/include/linux/isdn.h
@@ -1,4 +1,4 @@
-/* $Id: isdn.h,v 1.111.6.6 2001/05/17 21:15:34 kai Exp $
+/* $Id: isdn.h,v 1.111.6.7 2001/06/30 19:47:51 kai Exp $
* Main header for the Linux ISDN subsystem (linklevel).
*
@@ -27,6 +27,15 @@
#include <linux/ioctl.h>
+#ifdef CONFIG_COBALT_MICRO_SERVER
+/* Save memory */
+#define ISDN_MAX_DRIVERS 2
+#define ISDN_MAX_CHANNELS 8
+#else
+#define ISDN_MAX_DRIVERS 32
+#define ISDN_MAX_CHANNELS 64
+#endif
+
/* New ioctl-codes */
#define IIOCNETAIF _IO('I',1)
#define IIOCNETDIF _IO('I',2)
@@ -181,14 +190,6 @@ typedef struct {
* the correspondent code in isdn.c
*/
-#ifdef CONFIG_COBALT_MICRO_SERVER
-/* Save memory */
-#define ISDN_MAX_DRIVERS 2
-#define ISDN_MAX_CHANNELS 8
-#else
-#define ISDN_MAX_DRIVERS 32
-#define ISDN_MAX_CHANNELS 64
-#endif
#define ISDN_MINOR_B 0
#define ISDN_MINOR_BMAX (ISDN_MAX_CHANNELS-1)
#define ISDN_MINOR_CTRL 64
diff --git a/include/linux/isdn/tpam.h b/include/linux/isdn/tpam.h
new file mode 100644
index 000000000000..9f65bea49d11
--- /dev/null
+++ b/include/linux/isdn/tpam.h
@@ -0,0 +1,56 @@
+/* $Id: tpam.h,v 1.1.2.1 2001/06/08 08:23:46 kai Exp $
+ *
+ * Turbo PAM ISDN driver for Linux. (Kernel Driver)
+ *
+ * Copyright 2001 Stelian Pop <stelian.pop@fr.alcove.com>, Alcôve
+ *
+ * For all support questions please contact: <support@auvertech.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#ifndef _TPAM_H_
+#define _TPAM_H_
+
+#include <linux/types.h>
+#include <linux/pci.h>
+
+/* IOCTL commands */
+#define TPAM_CMD_DSPLOAD 0x0001
+#define TPAM_CMD_DSPSAVE 0x0002
+#define TPAM_CMD_DSPRUN 0x0003
+#define TPAM_CMD_LOOPMODEON 0x0004
+#define TPAM_CMD_LOOPMODEOFF 0x0005
+
+/* addresses of debug information zones on board */
+#define TPAM_TRAPAUDIT_REGISTER 0x005493e4
+#define TPAM_NCOAUDIT_REGISTER 0x00500000
+#define TPAM_MSGAUDIT_REGISTER 0x008E30F0
+
+/* length of debug information zones on board */
+#define TPAM_TRAPAUDIT_LENGTH 10000
+#define TPAM_NCOAUDIT_LENGTH 300000
+#define TPAM_NCOAUDIT_COUNT 30
+#define TPAM_MSGAUDIT_LENGTH 60000
+
+/* IOCTL load/save parameter */
+typedef struct tpam_dsp_ioctl {
+ __u32 address; /* address to load/save data */
+ __u32 data_len; /* size of data to be loaded/saved */
+ __u8 data[0]; /* data */
+} tpam_dsp_ioctl;
+
+#endif /* _TPAM_H_ */
diff --git a/include/linux/isdnif.h b/include/linux/isdnif.h
index f6239bd176d9..cca81b6b50a5 100644
--- a/include/linux/isdnif.h
+++ b/include/linux/isdnif.h
@@ -1,4 +1,4 @@
-/* $Id: isdnif.h,v 1.37.6.2 2001/05/17 21:15:34 kai Exp $
+/* $Id: isdnif.h,v 1.37.6.4 2001/06/09 15:14:19 kai Exp $
* Linux ISDN subsystem
*
@@ -433,6 +433,7 @@ typedef struct {
#ifdef CONFIG_ISDN_TTY_FAX
T30_s *fax; /* Pointer to ttys fax struct */
#endif
+ ulong userdata; /* User Data */
} parm;
} isdn_ctrl;
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h
index f183f57a5e87..ed5fbc59d247 100644
--- a/include/linux/nfsd/nfsd.h
+++ b/include/linux/nfsd/nfsd.h
@@ -81,7 +81,7 @@ void nfsd_racache_shutdown(void);
int nfsd_lookup(struct svc_rqst *, struct svc_fh *,
const char *, int, struct svc_fh *);
int nfsd_setattr(struct svc_rqst *, struct svc_fh *,
- struct iattr *);
+ struct iattr *, int, time_t);
int nfsd_create(struct svc_rqst *, struct svc_fh *,
char *name, int len, struct iattr *attrs,
int type, dev_t rdev, struct svc_fh *res);
@@ -143,6 +143,7 @@ void nfsd_lockd_unexport(struct svc_client *);
#define nfserr_noent __constant_htonl(NFSERR_NOENT)
#define nfserr_io __constant_htonl(NFSERR_IO)
#define nfserr_nxio __constant_htonl(NFSERR_NXIO)
+#define nfserr_eagain __constant_htonl(NFSERR_EAGAIN)
#define nfserr_acces __constant_htonl(NFSERR_ACCES)
#define nfserr_exist __constant_htonl(NFSERR_EXIST)
#define nfserr_xdev __constant_htonl(NFSERR_XDEV)
@@ -160,9 +161,10 @@ void nfsd_lockd_unexport(struct svc_client *);
#define nfserr_dquot __constant_htonl(NFSERR_DQUOT)
#define nfserr_stale __constant_htonl(NFSERR_STALE)
#define nfserr_remote __constant_htonl(NFSERR_REMOTE)
+#define nfserr_wflush __constant_htonl(NFSERR_WFLUSH)
#define nfserr_badhandle __constant_htonl(NFSERR_BADHANDLE)
-#define nfserr_notsync __constant_htonl(NFSERR_NOTSYNC)
-#define nfserr_badcookie __constant_htonl(NFSERR_BADCOOKIE)
+#define nfserr_notsync __constant_htonl(NFSERR_NOT_SYNC)
+#define nfserr_badcookie __constant_htonl(NFSERR_BAD_COOKIE)
#define nfserr_notsupp __constant_htonl(NFSERR_NOTSUPP)
#define nfserr_toosmall __constant_htonl(NFSERR_TOOSMALL)
#define nfserr_serverfault __constant_htonl(NFSERR_SERVERFAULT)
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h
index dc2dae68d1c7..2149cff1db25 100644
--- a/include/linux/nfsd/nfsfh.h
+++ b/include/linux/nfsd/nfsfh.h
@@ -199,7 +199,7 @@ inline static char * SVCFH_fmt(struct svc_fh *fhp)
* Function prototypes
*/
u32 fh_verify(struct svc_rqst *, struct svc_fh *, int, int);
-int fh_compose(struct svc_fh *, struct svc_export *, struct dentry *);
+int fh_compose(struct svc_fh *, struct svc_export *, struct dentry *, struct svc_fh *);
int fh_update(struct svc_fh *);
void fh_put(struct svc_fh *);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 3b4ae41a9f14..9fc5ccf43a5a 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -641,6 +641,8 @@ static inline void pci_set_master(struct pci_dev *dev) { }
static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
static inline void pci_disable_device(struct pci_dev *dev) { }
static inline int pci_module_init(struct pci_driver *drv) { return -ENODEV; }
+static inline int pci_set_dma_mask(struct pci_dev *dev, dma_addr_t mask) { return -EIO; }
+static inline int pci_set_power_state(struct pci_dev *dev, int state) { return 0; }
static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}
static inline int pci_register_driver(struct pci_driver *drv) { return 0;}
static inline void pci_unregister_driver(struct pci_driver *drv) { }
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index bb42ad226df2..9575ef38dee0 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -211,6 +211,7 @@
#define PCI_DEVICE_ID_ATI_RAGE128_PP 0x5050
#define PCI_DEVICE_ID_ATI_RAGE128_PQ 0x5051
#define PCI_DEVICE_ID_ATI_RAGE128_PR 0x5052
+#define PCI_DEVICE_ID_ATI_RAGE128_TR 0x5452
#define PCI_DEVICE_ID_ATI_RAGE128_PS 0x5053
#define PCI_DEVICE_ID_ATI_RAGE128_PT 0x5054
#define PCI_DEVICE_ID_ATI_RAGE128_PU 0x5055
@@ -326,6 +327,7 @@
#define PCI_DEVICE_ID_IBM_TR_WAKE 0x003e
#define PCI_DEVICE_ID_IBM_MPIC 0x0046
#define PCI_DEVICE_ID_IBM_3780IDSP 0x007d
+#define PCI_DEVICE_ID_IBM_CHUKAR 0x0096
#define PCI_DEVICE_ID_IBM_405GP 0x0156
#define PCI_DEVICE_ID_IBM_MPIC_2 0xffff
@@ -345,6 +347,9 @@
#define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001
#define PCI_DEVICE_ID_AMD_SCSI 0x2020
#define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
+#define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007
+#define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E
+#define PCI_DEVICE_ID_AMD_FE_GATE_700F 0x700F
#define PCI_DEVICE_ID_AMD_COBRA_7400 0x7400
#define PCI_DEVICE_ID_AMD_COBRA_7401 0x7401
#define PCI_DEVICE_ID_AMD_COBRA_7403 0x7403
@@ -353,6 +358,10 @@
#define PCI_DEVICE_ID_AMD_VIPER_7409 0x7409
#define PCI_DEVICE_ID_AMD_VIPER_740B 0x740B
#define PCI_DEVICE_ID_AMD_VIPER_740C 0x740C
+#define PCI_DEVICE_ID_AMD_VIPER_7410 0x7410
+#define PCI_DEVICE_ID_AMD_VIPER_7411 0x7411
+#define PCI_DEVICE_ID_AMD_VIPER_7413 0x7413
+#define PCI_DEVICE_ID_AMD_VIPER_7414 0x7414
#define PCI_VENDOR_ID_TRIDENT 0x1023
#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000
@@ -403,6 +412,7 @@
#define PCI_VENDOR_ID_NEC 0x1033
#define PCI_DEVICE_ID_NEC_PCX2 0x0046
#define PCI_DEVICE_ID_NEC_NILE4 0x005a
+#define PCI_DEVICE_ID_NEC_VRC5476 0x009b
#define PCI_VENDOR_ID_FD 0x1036
#define PCI_DEVICE_ID_FD_36C70 0x0000
@@ -417,15 +427,20 @@
#define PCI_DEVICE_ID_SI_501 0x0406
#define PCI_DEVICE_ID_SI_496 0x0496
#define PCI_DEVICE_ID_SI_300 0x0300
+#define PCI_DEVICE_ID_SI_315H 0x0310
+#define PCI_DEVICE_ID_SI_315 0x0315
#define PCI_DEVICE_ID_SI_530 0x0530
#define PCI_DEVICE_ID_SI_540 0x0540
+#define PCI_DEVICE_ID_SI_550 0x0550
#define PCI_DEVICE_ID_SI_540_VGA 0x5300
+#define PCI_DEVICE_ID_SI_550_VGA 0x5315
#define PCI_DEVICE_ID_SI_601 0x0601
#define PCI_DEVICE_ID_SI_620 0x0620
#define PCI_DEVICE_ID_SI_630 0x0630
-#define PCI_DEVICE_ID_SI_730 0x0730
+#define PCI_DEVICE_ID_SI_730 0x0730
#define PCI_DEVICE_ID_SI_630_VGA 0x6300
#define PCI_DEVICE_ID_SI_730_VGA 0x7300
+#define PCI_DEVICE_ID_SI_900 0x0900
#define PCI_DEVICE_ID_SI_5107 0x5107
#define PCI_DEVICE_ID_SI_5300 0x5300
#define PCI_DEVICE_ID_SI_5511 0x5511
@@ -439,6 +454,7 @@
#define PCI_DEVICE_ID_SI_6306 0x6306
#define PCI_DEVICE_ID_SI_6326 0x6326
#define PCI_DEVICE_ID_SI_7001 0x7001
+#define PCI_DEVICE_ID_SI_7016 0x7016
#define PCI_VENDOR_ID_HP 0x103c
#define PCI_DEVICE_ID_HP_DONNER_GFX 0x1008
@@ -508,6 +524,8 @@
#define PCI_DEVICE_ID_TI_1251A 0xac1d
#define PCI_DEVICE_ID_TI_1211 0xac1e
#define PCI_DEVICE_ID_TI_1251B 0xac1f
+#define PCI_DEVICE_ID_TI_4410 0xac41
+#define PCI_DEVICE_ID_TI_4451 0xac42
#define PCI_DEVICE_ID_TI_1420 0xac51
#define PCI_VENDOR_ID_SONY 0x104d
@@ -544,6 +562,7 @@
#define PCI_DEVICE_ID_PROMISE_20267 0x4d30
#define PCI_DEVICE_ID_PROMISE_20246 0x4d33
#define PCI_DEVICE_ID_PROMISE_20262 0x4d38
+#define PCI_DEVICE_ID_PROMISE_20268 0x4d68
#define PCI_DEVICE_ID_PROMISE_5300 0x5300
#define PCI_VENDOR_ID_N9 0x105d
@@ -800,6 +819,8 @@
#define PCI_VENDOR_ID_IMS 0x10e0
#define PCI_DEVICE_ID_IMS_8849 0x8849
+#define PCI_DEVICE_ID_IMS_TT128 0x9128
+#define PCI_DEVICE_ID_IMS_TT3D 0x9135
#define PCI_VENDOR_ID_TEKRAM2 0x10e1
#define PCI_DEVICE_ID_TEKRAM2_690c 0x690c
@@ -825,6 +846,9 @@
#define PCI_DEVICE_ID_REALTEK_8129 0x8129
#define PCI_DEVICE_ID_REALTEK_8139 0x8139
+#define PCI_VENDOR_ID_XILINX 0x10ee
+#define PCI_DEVICE_ID_TURBOPAM 0x4020
+
#define PCI_VENDOR_ID_TRUEVISION 0x10fa
#define PCI_DEVICE_ID_TRUEVISION_T1000 0x000c
@@ -1003,15 +1027,18 @@
#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001
#define PCI_DEVICE_ID_RENDITION_VERITE2100 0x2000
-#define PCI_VENDOR_ID_SERVERWORKS 0x1166
-#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
-#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
-#define PCI_DEVICE_ID_SERVERWORKS_CIOB30 0x0010
-#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011
-#define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201
-#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200
+#define PCI_VENDOR_ID_SERVERWORKS 0x1166
+#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
+#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
+#define PCI_DEVICE_ID_SERVERWORKS_CIOB30 0x0010
+#define PCI_DEVICE_ID_SERVERWORKS_CMIC_HE 0x0011
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201
+#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200
#define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212
#define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB
+#define PCI_DEVICE_ID_SERVERWORKS_CSB5ISA 0x0230
#define PCI_VENDOR_ID_SBE 0x1176
#define PCI_DEVICE_ID_SBE_WANXL100 0x0301
@@ -1189,6 +1216,9 @@
#define PCI_VENDOR_ID_ROCKWELL 0x127A
+#define PCI_VENDOR_ID_ITE 0x1283
+#define PCI_DEVICE_ID_ITE_IT8172G 0x8172
+
/* formerly Platform Tech */
#define PCI_VENDOR_ID_ESS_OLD 0x1285
#define PCI_DEVICE_ID_ESS_ESS0100 0x0100
@@ -1299,6 +1329,9 @@
#define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2 0x0108
#define PCI_SUBDEVICE_ID_HYPERCOPE_PLEXUS 0x0109
+#define PCI_VENDOR_ID_KAWASAKI 0x136b
+#define PCI_DEVICE_ID_MCHIP_KL5A72002 0xff01
+
#define PCI_VENDOR_ID_LMC 0x1376
#define PCI_DEVICE_ID_LMC_HSSI 0x0003
#define PCI_DEVICE_ID_LMC_DS3 0x0004
@@ -1372,6 +1405,8 @@
#define PCI_DEVICE_ID_AIRONET_4500 0x4800 // drivers/net/aironet4500_card.c
#define PCI_VENDOR_ID_TITAN 0x14D2
+#define PCI_DEVICE_ID_TITAN_110L 0x8011
+#define PCI_DEVICE_ID_TITAN_210L 0x8021
#define PCI_DEVICE_ID_TITAN_100 0xA001
#define PCI_DEVICE_ID_TITAN_200 0xA005
#define PCI_DEVICE_ID_TITAN_400 0xA003
@@ -1592,6 +1627,10 @@
#define PCI_VENDOR_ID_HOLTEK 0x9412
#define PCI_DEVICE_ID_HOLTEK_6565 0x6565
+#define PCI_VENDOR_ID_NETMOS 0x9710
+#define PCI_DEVICE_ID_NETMOS_9735 0x9735
+#define PCI_DEVICE_ID_NETMOS_9835 0x9835
+
#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h
index 4cff4260c939..00d314fb918e 100644
--- a/include/linux/sysv_fs.h
+++ b/include/linux/sysv_fs.h
@@ -7,7 +7,6 @@
/* This code assumes
- - a little endian processor like 386,
- sizeof(short) = 2, sizeof(int) = 4, sizeof(long) = 4,
- alignof(short) = 2, alignof(long) = 4.
*/
@@ -26,27 +25,17 @@
/* Layout on disk */
/* ============== */
-
-/* The block size is sb->sv_block_size which may be smaller than BLOCK_SIZE. */
-
-/* zones (= data allocation units) are blocks */
-
-/* On Coherent FS, 32 bit quantities are stored using (I quote the Coherent
- manual) a "canonical byte ordering". This is the PDP-11 byte ordering:
- x = 2^24 * byte3 + 2^16 * byte2 + 2^8 * byte1 + byte0 is stored
- as { byte2, byte3, byte0, byte1 }. We need conversions.
-*/
-
-typedef u32 coh_ulong;
-
-static inline coh_ulong to_coh_ulong (u32 x)
-{
- return ((x & 0xffff) << 16) | ((x & 0xffff0000) >> 16);
-}
-
-static inline u32 from_coh_ulong (coh_ulong x)
+static inline u32 PDP_swab(u32 x)
{
+#ifdef __LITTLE_ENDIAN
return ((x & 0xffff) << 16) | ((x & 0xffff0000) >> 16);
+#else
+#ifdef __BIG_ENDIAN
+ return ((x & 0xff00ff) << 8) | ((x & 0xff00ff00) >> 8);
+#else
+#error BYTESEX
+#endif
+#endif
}
/* inode numbers are 16 bit */
@@ -103,12 +92,6 @@ struct xenix_super_block {
};
-/* Xenix free list block on disk */
-struct xenix_freelist_chunk {
- u16 fl_nfree; /* number of free blocks in fl_free, <= XENIX_NICFREE] */
- u32 fl_free[XENIX_NICFREE] __packed2__;
-};
-
/* SystemV FS comes in two variants:
* sysv2: System V Release 2 (e.g. Microport), structure elements aligned(2).
* sysv4: System V Release 4 (e.g. Consensys), structure elements aligned(4).
@@ -148,12 +131,6 @@ struct sysv4_super_block {
2 for 1024 byte blocks */
};
-/* SystemV4 free list block on disk */
-struct sysv4_freelist_chunk {
- u16 fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
- u32 fl_free[SYSV_NICFREE];
-};
-
/* SystemV2 super-block data on disk */
struct sysv2_super_block {
u16 s_isize; /* index of first data zone */
@@ -182,10 +159,31 @@ struct sysv2_super_block {
2 for 1024 byte blocks */
};
-/* SystemV2 free list block on disk */
-struct sysv2_freelist_chunk {
- u16 fl_nfree; /* number of free blocks in fl_free, <= SYSV_NICFREE] */
- u32 fl_free[SYSV_NICFREE] __packed2__;
+/* V7 super-block data on disk */
+#define V7_NICINOD 100 /* number of inode cache entries */
+#define V7_NICFREE 50 /* number of free block list chunk entries */
+struct v7_super_block {
+ u16 s_isize; /* index of first data zone */
+ u32 s_fsize __packed2__; /* total number of zones of this fs */
+ /* the start of the free block list: */
+ u16 s_nfree; /* number of free blocks in s_free, <= V7_NICFREE */
+ u32 s_free[V7_NICFREE]; /* first free block list chunk */
+ /* the cache of free inodes: */
+ u16 s_ninode; /* number of free inodes in s_inode, <= V7_NICINOD */
+ sysv_ino_t s_inode[V7_NICINOD]; /* some free inodes */
+ /* locks, not used by Linux or V7: */
+ char s_flock; /* lock during free block list manipulation */
+ char s_ilock; /* lock during inode cache manipulation */
+ char s_fmod; /* super-block modified flag */
+ char s_ronly; /* flag whether fs is mounted read-only */
+ u32 s_time __packed2__; /* time of last super block update */
+ /* the following fields are not maintained by V7: */
+ u32 s_tfree __packed2__; /* total number of free zones */
+ u16 s_tinode; /* total number of free inodes */
+ u16 s_m; /* interleave factor */
+ u16 s_n; /* interleave factor */
+ char s_fname[6]; /* file system name */
+ char s_fpack[6]; /* file system pack name */
};
/* Coherent super-block data on disk */
@@ -193,10 +191,10 @@ struct sysv2_freelist_chunk {
#define COH_NICFREE 64 /* number of free block list chunk entries */
struct coh_super_block {
u16 s_isize; /* index of first data zone */
- coh_ulong s_fsize __packed2__; /* total number of zones of this fs */
+ u32 s_fsize __packed2__; /* total number of zones of this fs */
/* the start of the free block list: */
u16 s_nfree; /* number of free blocks in s_free, <= COH_NICFREE */
- coh_ulong s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
+ u32 s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
/* the cache of free inodes: */
u16 s_ninode; /* number of free inodes in s_inode, <= COH_NICINOD */
sysv_ino_t s_inode[COH_NICINOD]; /* some free inodes */
@@ -205,8 +203,8 @@ struct coh_super_block {
char s_ilock; /* lock during inode cache manipulation */
char s_fmod; /* super-block modified flag */
char s_ronly; /* flag whether fs is mounted read-only */
- coh_ulong s_time __packed2__; /* time of last super block update */
- coh_ulong s_tfree __packed2__; /* total number of free zones */
+ u32 s_time __packed2__; /* time of last super block update */
+ u32 s_tfree __packed2__; /* total number of free zones */
u16 s_tinode; /* total number of free inodes */
u16 s_interleave_m; /* interleave factor */
u16 s_interleave_n;
@@ -215,13 +213,6 @@ struct coh_super_block {
u32 s_unique; /* zero, not used */
};
-/* Coherent free list block on disk */
-struct coh_freelist_chunk {
- u16 fl_nfree; /* number of free blocks in fl_free, <= COH_NICFREE] */
- u32 fl_free[COH_NICFREE] __packed2__;
-};
-
-
/* SystemV/Coherent inode data on disk */
struct sysv_inode {
@@ -237,8 +228,6 @@ struct sysv_inode {
* then 1 triple indirection block.
* Then maybe a "file generation number" ??
*/
- /* devices */
- dev_t i_rdev;
/* named pipes on Coherent */
struct {
char p_addp[30];
@@ -300,9 +289,12 @@ extern inline unsigned short to_coh_imode(mode_t mode)
}
/* Admissible values for i_nlink: 0.._LINK_MAX */
-#define XENIX_LINK_MAX 126 /* ?? */
-#define SYSV_LINK_MAX 126 /* 127? 251? */
-#define COH_LINK_MAX 10000 /* max number of hard links to an inode */
+enum {
+ XENIX_LINK_MAX = 126, /* ?? */
+ SYSV_LINK_MAX = 126, /* 127? 251? */
+ V7_LINK_MAX = 126, /* ?? */
+ COH_LINK_MAX = 10000,
+};
/* The number of inodes per block is
sb->sv_inodes_per_block = block_size / sizeof(struct sysv_inode) */
@@ -325,12 +317,16 @@ struct sysv_dir_entry {
/* Operations */
/* ========== */
-
/* identify the FS in memory */
-#define FSTYPE_XENIX 1
-#define FSTYPE_SYSV4 2
-#define FSTYPE_SYSV2 3
-#define FSTYPE_COH 4
+enum {
+ FSTYPE_NONE = 0,
+ FSTYPE_XENIX,
+ FSTYPE_SYSV4,
+ FSTYPE_SYSV2,
+ FSTYPE_COH,
+ FSTYPE_V7,
+ FSTYPE_END,
+};
#define SYSV_MAGIC_BASE 0x012FF7B3
@@ -341,55 +337,112 @@ struct sysv_dir_entry {
#ifdef __KERNEL__
-/* sv_get_hash_table(sb,dev,block) is equivalent to get_hash_table(dev,block,block_size) */
-static inline struct buffer_head *
-sv_get_hash_table (struct super_block *sb, kdev_t dev, unsigned int block)
-{
- return get_hash_table (dev, block + sb->sv_block_base, sb->sv_block_size);
-}
-
-/* sv_getblk(sb,dev,block) is equivalent to getblk(dev,block,block_size) */
-static inline struct buffer_head *
-sv_getblk (struct super_block *sb, kdev_t dev, unsigned int block)
-{
- return getblk (dev, block + sb->sv_block_base, sb->sv_block_size);
-}
-
-/* sv_bread(sb,dev,block) is equivalent to bread(dev,block,block_size) */
-static inline struct buffer_head *
-sv_bread (struct super_block *sb, kdev_t dev, unsigned int block)
-{
- return bread (dev, block + sb->sv_block_base, sb->sv_block_size);
-}
-
+enum {
+ BYTESEX_LE,
+ BYTESEX_PDP,
+ BYTESEX_BE,
+};
/*
* Function prototypes
*/
-extern struct inode * sysv_new_inode(const struct inode * dir);
-extern void sysv_free_inode(struct inode * inode);
-extern unsigned long sysv_count_free_inodes(struct super_block *sb);
-extern int sysv_new_block(struct super_block * sb);
-extern void sysv_free_block(struct super_block * sb, unsigned int block);
-extern unsigned long sysv_count_free_blocks(struct super_block *sb);
-
-extern struct buffer_head * sysv_file_bread(struct inode *, int, int);
+extern struct inode * sysv_new_inode(const struct inode *, mode_t);
+extern void sysv_free_inode(struct inode *);
+extern unsigned long sysv_count_free_inodes(struct super_block *);
+extern u32 sysv_new_block(struct super_block *);
+extern void sysv_free_block(struct super_block *, u32);
+extern unsigned long sysv_count_free_blocks(struct super_block *);
extern void sysv_truncate(struct inode *);
+
extern void sysv_write_inode(struct inode *, int);
extern int sysv_sync_inode(struct inode *);
extern int sysv_sync_file(struct file *, struct dentry *, int);
extern int sysv_notify_change(struct dentry *, struct iattr *);
+extern void sysv_set_inode(struct inode *, dev_t);
+
+extern struct sysv_dir_entry *sysv_find_entry(struct dentry*, struct page**);
+extern int sysv_add_link(struct dentry*, struct inode*);
+extern int sysv_delete_entry(struct sysv_dir_entry*, struct page*);
+extern int sysv_make_empty(struct inode*, struct inode*);
+extern int sysv_empty_dir(struct inode*);
+extern void sysv_set_link(struct sysv_dir_entry*, struct page*, struct inode*);
+extern struct sysv_dir_entry *sysv_dotdot(struct inode*, struct page**);
+extern ino_t sysv_inode_by_name(struct dentry*);
extern struct inode_operations sysv_file_inode_operations;
-extern struct inode_operations sysv_symlink_inode_operations;
extern struct inode_operations sysv_dir_inode_operations;
extern struct file_operations sysv_file_operations;
extern struct file_operations sysv_dir_operations;
extern struct address_space_operations sysv_aops;
+extern struct super_operations sysv_sops;
+extern struct dentry_operations sysv_dentry_operations;
+
+extern struct sysv_inode *sysv_raw_inode(struct super_block *, unsigned, struct buffer_head **);
+
+static inline void dirty_sb(struct super_block *sb)
+{
+ mark_buffer_dirty(sb->sv_bh1);
+ if (sb->sv_bh1 != sb->sv_bh2)
+ mark_buffer_dirty(sb->sv_bh2);
+ sb->s_dirt = 1;
+}
+
+static inline u32 fs32_to_cpu(struct super_block *sb, u32 n)
+{
+ if (sb->sv_bytesex == BYTESEX_PDP)
+ return PDP_swab(n);
+ else if (sb->sv_bytesex == BYTESEX_LE)
+ return le32_to_cpu(n);
+ else
+ return be32_to_cpu(n);
+}
+
+static inline u32 cpu_to_fs32(struct super_block *sb, u32 n)
+{
+ if (sb->sv_bytesex == BYTESEX_PDP)
+ return PDP_swab(n);
+ else if (sb->sv_bytesex == BYTESEX_LE)
+ return cpu_to_le32(n);
+ else
+ return cpu_to_be32(n);
+}
+
+static inline u32 fs32_add(struct super_block *sb, u32 *n, int d)
+{
+ if (sb->sv_bytesex == BYTESEX_PDP)
+ return *n = PDP_swab(PDP_swab(*n)+d);
+ else if (sb->sv_bytesex == BYTESEX_LE)
+ return *n = cpu_to_le32(le32_to_cpu(*n)+d);
+ else
+ return *n = cpu_to_be32(be32_to_cpu(*n)+d);
+}
+
+static inline u16 fs16_to_cpu(struct super_block *sb, u16 n)
+{
+ if (sb->sv_bytesex != BYTESEX_BE)
+ return le16_to_cpu(n);
+ else
+ return be16_to_cpu(n);
+}
+
+static inline u16 cpu_to_fs16(struct super_block *sb, u16 n)
+{
+ if (sb->sv_bytesex != BYTESEX_BE)
+ return cpu_to_le16(n);
+ else
+ return cpu_to_be16(n);
+}
+
+static inline u16 fs16_add(struct super_block *sb, u16 *n, int d)
+{
+ if (sb->sv_bytesex != BYTESEX_BE)
+ return *n = cpu_to_le16(le16_to_cpu(*n)+d);
+ else
+ return *n = cpu_to_be16(be16_to_cpu(*n)+d);
+}
#endif /* __KERNEL__ */
#endif
-
diff --git a/include/linux/sysv_fs_i.h b/include/linux/sysv_fs_i.h
index 990b3543fdcd..08eff4449aff 100644
--- a/include/linux/sysv_fs_i.h
+++ b/include/linux/sysv_fs_i.h
@@ -2,7 +2,7 @@
#define _SYSV_FS_I
/*
- * SystemV/Coherent FS inode data in memory
+ * SystemV/V7/Coherent FS inode data in memory
*/
struct sysv_inode_info {
u32 i_data[10+1+1+1]; /* zone numbers: max. 10 data blocks,
diff --git a/include/linux/sysv_fs_sb.h b/include/linux/sysv_fs_sb.h
index df886f651c02..fe324c96df84 100644
--- a/include/linux/sysv_fs_sb.h
+++ b/include/linux/sysv_fs_sb.h
@@ -2,8 +2,8 @@
#define _SYSV_FS_SB
/*
- * SystemV/Coherent super-block data in memory
- * The SystemV/Coherent superblock contains dynamic data (it gets modified
+ * SystemV/V7/Coherent super-block data in memory
+ * The SystemV/V7/Coherent superblock contains dynamic data (it gets modified
* while the system is running). This is in contrast to the Minix and Berkeley
* filesystems (where the superblock is never modified). This affects the
* sync() operation: we must keep the superblock in a disk buffer and use this
@@ -12,12 +12,7 @@
struct sysv_sb_info {
int s_type; /* file system type: FSTYPE_{XENIX|SYSV|COH} */
- unsigned int s_block_size; /* zone size, = 512 or = 1024 */
- unsigned int s_block_size_1; /* block_size - 1 */
- unsigned int s_block_size_bits; /* log2(block_size) */
- unsigned int s_block_size_inc_bits; /* log2(block_size/BLOCK_SIZE) if >0 */
- unsigned int s_block_size_dec_bits; /* log2(BLOCK_SIZE/block_size) if >0 */
- char s_convert; /* flag whether byte ordering requires conversion */
+ char s_bytesex; /* bytesex (le/be/pdp) */
char s_kludge_symlinks; /* flag whether symlinks have a kludgey mode */
char s_truncate; /* if 1: names > SYSV_NAMELEN chars are truncated */
/* if 0: they are disallowed (ENAMETOOLONG) */
@@ -26,19 +21,8 @@ struct sysv_sb_info {
unsigned int s_inodes_per_block_1; /* inodes_per_block - 1 */
unsigned int s_inodes_per_block_bits; /* log2(inodes_per_block) */
unsigned int s_ind_per_block; /* number of indirections per block */
- unsigned int s_ind_per_block_1; /* ind_per_block - 1 */
unsigned int s_ind_per_block_bits; /* log2(ind_per_block) */
unsigned int s_ind_per_block_2; /* ind_per_block ^ 2 */
- unsigned int s_ind_per_block_2_1; /* ind_per_block ^ 2 - 1 */
- unsigned int s_ind_per_block_2_bits; /* log2(ind_per_block^2) */
- unsigned int s_ind_per_block_3; /* ind_per_block ^ 3 */
- unsigned int s_ind_per_block_block_size_1; /* ind_per_block*block_size - 1 */
- unsigned int s_ind_per_block_block_size_bits; /* log2(ind_per_block*block_size) */
- unsigned int s_ind_per_block_2_block_size_1; /* ind_per_block^2 * block_size - 1 */
- unsigned int s_ind_per_block_2_block_size_bits; /* log2(ind_per_block^2 * block_size) */
- unsigned int s_ind0_size; /* 10 * block_size */
- unsigned int s_ind1_size; /* (10 + ipb) * block_size */
- unsigned int s_ind2_size; /* (10 + ipb + ipb^2) * block_size */
unsigned int s_toobig_block; /* 10 + ipb + ipb^2 + ipb^3 */
unsigned int s_block_base; /* physical block number of block 0 */
unsigned short s_fic_size; /* free inode cache size, NICINOD */
@@ -53,9 +37,9 @@ struct sysv_sb_info {
u16 *s_sb_fic_count; /* pointer to s_sbd->s_ninode */
u16 *s_sb_fic_inodes; /* pointer to s_sbd->s_inode */
u16 *s_sb_total_free_inodes; /* pointer to s_sbd->s_tinode */
- u16 *s_sb_flc_count; /* pointer to s_sbd->s_nfree */
- u32 *s_sb_flc_blocks; /* pointer to s_sbd->s_free */
- u32 *s_sb_total_free_blocks;/* pointer to s_sbd->s_tfree */
+ u16 *s_bcache_count; /* pointer to s_sbd->s_nfree */
+ u32 *s_bcache; /* pointer to s_sbd->s_free */
+ u32 *s_free_blocks; /* pointer to s_sbd->s_tfree */
u32 *s_sb_time; /* pointer to s_sbd->s_time */
u32 *s_sb_state; /* pointer to s_sbd->s_state, only FSTYPE_SYSV */
/* We keep those superblock entities that don't change here;
@@ -65,17 +49,13 @@ struct sysv_sb_info {
u32 s_ninodes; /* total number of inodes */
u32 s_ndatazones; /* total number of data zones */
u32 s_nzones; /* same as s_sbd->s_fsize */
+ u16 s_namelen; /* max length of dir entry */
};
-/* The fields s_ind_per_block_2_1, s_toobig_block are currently unused. */
+/* The field s_toobig_block is currently unused. */
/* sv_ == u.sysv_sb.s_ */
#define sv_type u.sysv_sb.s_type
-#define sv_block_size u.sysv_sb.s_block_size
-#define sv_block_size_1 u.sysv_sb.s_block_size_1
-#define sv_block_size_bits u.sysv_sb.s_block_size_bits
-#define sv_block_size_inc_bits u.sysv_sb.s_block_size_inc_bits
-#define sv_block_size_dec_bits u.sysv_sb.s_block_size_dec_bits
-#define sv_convert u.sysv_sb.s_convert
+#define sv_bytesex u.sysv_sb.s_bytesex
#define sv_kludge_symlinks u.sysv_sb.s_kludge_symlinks
#define sv_truncate u.sysv_sb.s_truncate
#define sv_link_max u.sysv_sb.s_link_max
@@ -83,19 +63,8 @@ struct sysv_sb_info {
#define sv_inodes_per_block_1 u.sysv_sb.s_inodes_per_block_1
#define sv_inodes_per_block_bits u.sysv_sb.s_inodes_per_block_bits
#define sv_ind_per_block u.sysv_sb.s_ind_per_block
-#define sv_ind_per_block_1 u.sysv_sb.s_ind_per_block_1
#define sv_ind_per_block_bits u.sysv_sb.s_ind_per_block_bits
#define sv_ind_per_block_2 u.sysv_sb.s_ind_per_block_2
-#define sv_ind_per_block_2_1 u.sysv_sb.s_ind_per_block_2_1
-#define sv_ind_per_block_2_bits u.sysv_sb.s_ind_per_block_2_bits
-#define sv_ind_per_block_3 u.sysv_sb.s_ind_per_block_3
-#define sv_ind_per_block_block_size_1 u.sysv_sb.s_ind_per_block_block_size_1
-#define sv_ind_per_block_block_size_bits u.sysv_sb.s_ind_per_block_block_size_bits
-#define sv_ind_per_block_2_block_size_1 u.sysv_sb.s_ind_per_block_2_block_size_1
-#define sv_ind_per_block_2_block_size_bits u.sysv_sb.s_ind_per_block_2_block_size_bits
-#define sv_ind0_size u.sysv_sb.s_ind0_size
-#define sv_ind1_size u.sysv_sb.s_ind1_size
-#define sv_ind2_size u.sysv_sb.s_ind2_size
#define sv_toobig_block u.sysv_sb.s_toobig_block
#define sv_block_base u.sysv_sb.s_block_base
#define sv_fic_size u.sysv_sb.s_fic_size
@@ -107,9 +76,9 @@ struct sysv_sb_info {
#define sv_sb_fic_count u.sysv_sb.s_sb_fic_count
#define sv_sb_fic_inodes u.sysv_sb.s_sb_fic_inodes
#define sv_sb_total_free_inodes u.sysv_sb.s_sb_total_free_inodes
-#define sv_sb_flc_count u.sysv_sb.s_sb_flc_count
-#define sv_sb_flc_blocks u.sysv_sb.s_sb_flc_blocks
-#define sv_sb_total_free_blocks u.sysv_sb.s_sb_total_free_blocks
+#define sv_bcache_count u.sysv_sb.s_bcache_count
+#define sv_bcache u.sysv_sb.s_bcache
+#define sv_free_blocks u.sysv_sb.s_free_blocks
#define sv_sb_time u.sysv_sb.s_sb_time
#define sv_sb_state u.sysv_sb.s_sb_state
#define sv_firstinodezone u.sysv_sb.s_firstinodezone
@@ -117,6 +86,6 @@ struct sysv_sb_info {
#define sv_ninodes u.sysv_sb.s_ninodes
#define sv_ndatazones u.sysv_sb.s_ndatazones
#define sv_nzones u.sysv_sb.s_nzones
+#define sv_namelen u.sysv_sb.s_namelen
#endif
-
diff --git a/include/linux/udf_fs.h b/include/linux/udf_fs.h
index 4edb0a337318..736d617f0a68 100644
--- a/include/linux/udf_fs.h
+++ b/include/linux/udf_fs.h
@@ -37,8 +37,8 @@
#define UDF_PREALLOCATE
#define UDF_DEFAULT_PREALLOC_BLOCKS 8
-#define UDFFS_DATE "2001/06/06"
-#define UDFFS_VERSION "0.9.4"
+#define UDFFS_DATE "2001/06/13"
+#define UDFFS_VERSION "0.9.4.1"
#if !defined(UDFFS_RW)
diff --git a/include/linux/udf_fs_i.h b/include/linux/udf_fs_i.h
index 84c481cd390b..3d48fced7cc1 100644
--- a/include/linux/udf_fs_i.h
+++ b/include/linux/udf_fs_i.h
@@ -30,9 +30,10 @@ typedef struct
struct udf_inode_info
{
- long i_uatime;
long i_umtime;
long i_uctime;
+ long i_crtime;
+ long i_ucrtime;
/* Physical address of inode */
lb_addr i_location;
__u64 i_unique;
diff --git a/include/linux/udf_udf.h b/include/linux/udf_udf.h
index 4fa4b3df754e..6b9df04be3e1 100644
--- a/include/linux/udf_udf.h
+++ b/include/linux/udf_udf.h
@@ -162,6 +162,10 @@ struct VirtualAllocationTable20 {
Uint32 vatEntry[0];
};
+/* ----------- 2.01 ------------- */
+/* UDF 2.01 6.11 */
+#define FILE_TYPE_REALTIME 0xf9U
+
/* Sparing maps, see UDF 1.5 2.2.11 */
typedef struct {
Uint32 origLocation;