Update of /cvsroot/linux-vax/kernel-2.4/fs In directory usw-pr-cvs1:/tmp/cvs-serv32005 Modified Files: Config.in Makefile attr.c read_write.c readdir.c select.c stat.c super.c Added Files: seq_file.c Log Message: synch 2.4.15 commit 14 --- NEW FILE --- /* * linux/fs/seq_file.c * * helper functions for making syntetic files from sequences of records. * initial implementation -- AV, Oct 2001. */ #include <linux/fs.h> #include <linux/seq_file.h> #include <linux/slab.h> #include <asm/uaccess.h> /** * seq_open - initialize sequential file * @file: file we initialize * @op: method table describing the sequence * * seq_open() sets @file, associating it with a sequence described * by @op. @op->start() sets the iterator up and returns the first * element of sequence. @op->stop() shuts it down. @op->next() * returns the next element of sequence. @op->show() prints element * into the buffer. In case of error ->start() and ->next() return * ERR_PTR(error). In the end of sequence they return %NULL. ->show() * returns 0 in case of success and negative number in case of error. */ int seq_open(struct file *file, struct seq_operations *op) { struct seq_file *p = kmalloc(sizeof(*p), GFP_KERNEL); if (!p) return -ENOMEM; memset(p, 0, sizeof(*p)); sema_init(&p->sem, 1); p->op = op; file->private_data = p; return 0; } /** * seq_read - ->read() method for sequential files. * @file, @buf, @size, @ppos: see file_operations method * * Ready-made ->f_op->read() */ ssize_t seq_read(struct file *file, char *buf, size_t size, loff_t *ppos) { struct seq_file *m = (struct seq_file *)file->private_data; size_t copied = 0; loff_t pos; size_t n; void *p; int err = 0; if (ppos != &file->f_pos) return -EPIPE; down(&m->sem); /* grab buffer if we didn't have one */ if (!m->buf) { m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL); if (!m->buf) goto Enomem; } /* if not empty - flush it first */ if (m->count) { n = min(m->count, size); err = copy_to_user(buf, m->buf + m->from, n); if (err) goto Efault; m->count -= n; m->from += n; size -= n; buf += n; copied += n; if (!m->count) m->index++; if (!size) goto Done; } /* we need at least one record in buffer */ while (1) { pos = m->index; p = m->op->start(m, &pos); err = PTR_ERR(p); if (!p || IS_ERR(p)) break; err = m->op->show(m, p); if (err) break; if (m->count < m->size) goto Fill; m->op->stop(m, p); kfree(m->buf); m->buf = kmalloc(m->size <<= 1, GFP_KERNEL); if (!m->buf) goto Enomem; } m->op->stop(m, p); goto Done; Fill: /* they want more? let's try to get some more */ while (m->count < size) { size_t offs = m->count; loff_t next = pos; p = m->op->next(m, p, &next); if (!p || IS_ERR(p)) { err = PTR_ERR(p); break; } err = m->op->show(m, p); if (err || m->count == m->size) { m->count = offs; break; } pos = next; } m->op->stop(m, p); n = min(m->count, size); err = copy_to_user(buf, m->buf, n); if (err) goto Efault; copied += n; m->count -= n; if (m->count) m->from = n; else pos++; m->index = pos; Done: if (!copied) copied = err; else *ppos += copied; up(&m->sem); return copied; Enomem: err = -ENOMEM; goto Done; Efault: err = -EFAULT; goto Done; } static int traverse(struct seq_file *m, loff_t offset) { loff_t pos = 0; int error = 0; void *p; m->index = 0; m->count = m->from = 0; if (!offset) return 0; if (!m->buf) { m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL); if (!m->buf) return -ENOMEM; } p = m->op->start(m, &m->index); while (p) { error = PTR_ERR(p); if (IS_ERR(p)) break; error = m->op->show(m, p); if (error) break; if (m->count == m->size) goto Eoverflow; if (pos + m->count > offset) { m->from = offset - pos; m->count -= m->from; break; } pos += m->count; m->count = 0; if (pos == offset) { m->index++; break; } p = m->op->next(m, p, &m->index); } m->op->stop(m, p); return error; Eoverflow: m->op->stop(m, p); kfree(m->buf); m->buf = kmalloc(m->size <<= 1, GFP_KERNEL); return !m->buf ? -ENOMEM : -EAGAIN; } /** * seq_lseek - ->llseek() method for sequential files. * @file, @offset, @origin: see file_operations method * * Ready-made ->f_op->llseek() */ loff_t seq_lseek(struct file *file, loff_t offset, int origin) { struct seq_file *m = (struct seq_file *)file->private_data; long long retval = -EINVAL; down(&m->sem); switch (origin) { case 1: offset += file->f_pos; case 0: if (offset < 0) break; retval = offset; if (offset != file->f_pos) { while ((retval=traverse(m, offset)) == -EAGAIN) ; if (retval) { /* with extreme perjudice... */ file->f_pos = 0; m->index = 0; m->count = 0; } else { retval = file->f_pos = offset; } } } up(&m->sem); return retval; } /** * seq_release - free the structures associated with sequential file. * @file: file in question * @inode: file->f_dentry->d_inode * * Frees the structures associated with sequential file; can be used * as ->f_op->release() if you don't have private data to destroy. */ int seq_release(struct inode *inode, struct file *file) { struct seq_file *m = (struct seq_file *)file->private_data; kfree(m->buf); kfree(m); return 0; } /** * seq_escape - print string into buffer, escaping some characters * @m: target buffer * @s: string * @esc: set of characters that need escaping * * Puts string into buffer, replacing each occurence of character from * @esc with usual octal escape. Returns 0 in case of success, -1 - in * case of overflow. */ int seq_escape(struct seq_file *m, const char *s, const char *esc) { char *end = m->buf + m->size; char *p; char c; for (p = m->buf + m->count; (c = *s) != '\0' && p < end; s++) { if (!strchr(esc, c)) { *p++ = c; continue; } if (p + 3 < end) { *p++ = '\\'; *p++ = '0' + ((c & 0300) >> 6); *p++ = '0' + ((c & 070) >> 3); *p++ = '0' + (c & 07); continue; } m->count = m->size; return -1; } m->count = p - m->buf; return 0; } int seq_printf(struct seq_file *m, const char *f, ...) { va_list args; int len; if (m->count < m->size) { va_start(args, f); len = vsnprintf(m->buf + m->count, m->size - m->count, f, args); va_end(args); if (m->count + len < m->size) { m->count += len; return 0; } } m->count = m->size; return -1; } Index: Config.in =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/Config.in,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Config.in 25 Feb 2001 23:14:46 -0000 1.1.1.2 +++ Config.in 9 Apr 2002 13:30:18 -0000 1.2 @@ -10,6 +10,7 @@ dep_tristate 'Reiserfs support' CONFIG_REISERFS_FS $CONFIG_EXPERIMENTAL dep_mbool ' Have reiserfs do extra internal checking' CONFIG_REISERFS_CHECK $CONFIG_REISERFS_FS $CONFIG_EXPERIMENTAL +dep_mbool ' Stats in /proc/fs/reiserfs' CONFIG_REISERFS_PROC_INFO $CONFIG_REISERFS_FS $CONFIG_EXPERIMENTAL dep_tristate 'ADFS file system support' CONFIG_ADFS_FS $CONFIG_EXPERIMENTAL dep_mbool ' ADFS write support (DANGEROUS)' CONFIG_ADFS_FS_RW $CONFIG_ADFS_FS $CONFIG_EXPERIMENTAL @@ -20,24 +21,39 @@ dep_tristate 'BFS file system support (EXPERIMENTAL)' CONFIG_BFS_FS $CONFIG_EXPERIMENTAL +tristate 'Ext3 journalling file system support (EXPERIMENTAL)' CONFIG_EXT3_FS +# CONFIG_JBD could be its own option (even modular), but until there are +# other users than ext3, we will simply make it be the same as CONFIG_EXT3_FS +# dep_tristate ' Journal Block Device support (JBD for ext3)' CONFIG_JBD $CONFIG_EXT3_FS +define_bool CONFIG_JBD $CONFIG_EXT3_FS +dep_mbool ' JBD (ext3) debugging support' CONFIG_JBD_DEBUG $CONFIG_JBD + # msdos file systems tristate 'DOS FAT fs support' CONFIG_FAT_FS dep_tristate ' MSDOS fs support' CONFIG_MSDOS_FS $CONFIG_FAT_FS dep_tristate ' UMSDOS: Unix-like file system on top of standard MSDOS fs' CONFIG_UMSDOS_FS $CONFIG_MSDOS_FS dep_tristate ' VFAT (Windows-95) fs support' CONFIG_VFAT_FS $CONFIG_FAT_FS dep_tristate 'EFS file system support (read only) (EXPERIMENTAL)' CONFIG_EFS_FS $CONFIG_EXPERIMENTAL -dep_tristate 'Journalling Flash File System (JFFS) support (EXPERIMENTAL)' CONFIG_JFFS_FS $CONFIG_EXPERIMENTAL $CONFIG_MTD -if [ "$CONFIG_JFFS_FS" != "n" ] ; then - int 'JFFS debugging verbosity (0 = quiet, 3 = noisy)' CONFIG_JFFS_FS_VERBOSE 0 +dep_tristate 'Journalling Flash File System (JFFS) support' CONFIG_JFFS_FS $CONFIG_MTD +if [ "$CONFIG_JFFS_FS" = "y" -o "$CONFIG_JFFS_FS" = "m" ] ; then + int 'JFFS debugging verbosity (0 = quiet, 3 = noisy)' CONFIG_JFFS_FS_VERBOSE 0 + bool 'JFFS stats available in /proc filesystem' CONFIG_JFFS_PROC_FS +fi +dep_tristate 'Journalling Flash File System v2 (JFFS2) support' CONFIG_JFFS2_FS $CONFIG_MTD +if [ "$CONFIG_JFFS2_FS" = "y" -o "$CONFIG_JFFS2_FS" = "m" ] ; then + int 'JFFS2 debugging verbosity (0 = quiet, 2 = noisy)' CONFIG_JFFS2_FS_DEBUG 0 fi tristate 'Compressed ROM file system support' CONFIG_CRAMFS +bool 'Virtual memory file system support (former shm fs)' CONFIG_TMPFS tristate 'Simple RAM-based file system support' CONFIG_RAMFS tristate 'ISO 9660 CDROM file system support' CONFIG_ISO9660_FS dep_mbool ' Microsoft Joliet CDROM extensions' CONFIG_JOLIET $CONFIG_ISO9660_FS +dep_mbool ' Transparent decompression extension' CONFIG_ZISOFS $CONFIG_ISO9660_FS tristate 'Minix fs support' CONFIG_MINIX_FS +tristate 'FreeVxFS file system support (VERITAS VxFS(TM) compatible)' CONFIG_VXFS_FS tristate 'NTFS file system support (read only)' CONFIG_NTFS_FS dep_mbool ' NTFS write support (DANGEROUS)' CONFIG_NTFS_RW $CONFIG_NTFS_FS $CONFIG_EXPERIMENTAL @@ -62,8 +78,7 @@ tristate 'Second extended fs support' CONFIG_EXT2_FS -tristate 'System V and Coherent file system support (read only)' CONFIG_SYSV_FS -dep_mbool ' SYSV file system write support (DANGEROUS)' CONFIG_SYSV_FS_WRITE $CONFIG_SYSV_FS $CONFIG_EXPERIMENTAL +tristate 'System V/Xenix/V7/Coherent file system support' CONFIG_SYSV_FS tristate 'UDF file system support (read only)' CONFIG_UDF_FS dep_mbool ' UDF write support (DANGEROUS)' CONFIG_UDF_RW $CONFIG_UDF_FS $CONFIG_EXPERIMENTAL @@ -77,6 +92,7 @@ comment 'Network File Systems' dep_tristate 'Coda file system support (advanced network fs)' CONFIG_CODA_FS $CONFIG_INET + dep_tristate 'InterMezzo file system support (experimental, replicating fs)' CONFIG_INTERMEZZO_FS $CONFIG_INET $CONFIG_EXPERIMENTAL dep_tristate 'NFS file system support' CONFIG_NFS_FS $CONFIG_INET dep_mbool ' Provide NFSv3 client support' CONFIG_NFS_V3 $CONFIG_NFS_FS dep_bool ' Root file system on NFS' CONFIG_ROOT_NFS $CONFIG_NFS_FS $CONFIG_IP_PNP @@ -102,9 +118,9 @@ dep_tristate 'SMB file system support (to mount Windows shares etc.)' CONFIG_SMB_FS $CONFIG_INET if [ "$CONFIG_SMB_FS" != "n" ]; then - bool ' Use a default NLS' CONFIG_SMB_NLS_DEFAULT + bool ' Use a default NLS' CONFIG_SMB_NLS_DEFAULT if [ "$CONFIG_SMB_NLS_DEFAULT" = "y" ]; then - string ' Default Remote NLS Option' CONFIG_SMB_NLS_REMOTE "cp437" + string ' Default Remote NLS Option' CONFIG_SMB_NLS_REMOTE "cp437" fi fi if [ "$CONFIG_IPX" != "n" -o "$CONFIG_INET" != "n" ]; then @@ -120,6 +136,24 @@ # for fs/nls/Config.in define_bool CONFIG_NCPFS_NLS n define_bool CONFIG_SMB_FS n +fi + +# +# Do we need the compression support? +# +if [ "$CONFIG_ZISOFS" = "y" ]; then + define_tristate CONFIG_ZISOFS_FS $CONFIG_ISO9660_FS +else + define_tristate CONFIG_ZISOFS_FS n +fi +if [ "$CONFIG_CRAMFS" = "y" -o "$CONFIG_ZISOFS_FS" = "y" ]; then + define_tristate CONFIG_ZLIB_FS_INFLATE y +else + if [ "$CONFIG_CRAMFS" = "m" -o "$CONFIG_ZISOFS_FS" = "m" ]; then + define_tristate CONFIG_ZLIB_FS_INFLATE m + else + define_tristate CONFIG_ZLIB_FS_INFLATE n + fi fi mainmenu_option next_comment Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/Makefile,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- Makefile 25 Feb 2001 23:14:45 -0000 1.1.1.2 +++ Makefile 9 Apr 2002 13:30:18 -0000 1.2 @@ -7,14 +7,14 @@ O_TARGET := fs.o -export-objs := filesystems.o +export-objs := filesystems.o open.o dcache.o buffer.o mod-subdirs := nls obj-y := open.o read_write.o devices.o file_table.o buffer.o \ - super.o block_dev.o stat.o exec.o pipe.o namei.o fcntl.o \ - ioctl.o readdir.o select.o fifo.o locks.o \ + super.o block_dev.o char_dev.o stat.o exec.o pipe.o namei.o \ + fcntl.o ioctl.o readdir.o select.o fifo.o locks.o \ dcache.o inode.o attr.o bad_inode.o file.o iobuf.o dnotify.o \ - filesystems.o + filesystems.o namespace.o seq_file.o ifeq ($(CONFIG_QUOTA),y) obj-y += dquot.o @@ -26,23 +26,28 @@ subdir-y += partitions # Do not add any filesystems before this line +subdir-$(CONFIG_EXT3_FS) += ext3 # Before ext2 so root fs can be ext3 +subdir-$(CONFIG_JBD) += jbd subdir-$(CONFIG_EXT2_FS) += ext2 +subdir-$(CONFIG_ZLIB_FS_INFLATE) += inflate_fs subdir-$(CONFIG_CRAMFS) += cramfs subdir-$(CONFIG_RAMFS) += ramfs subdir-$(CONFIG_CODA_FS) += coda +subdir-$(CONFIG_INTERMEZZO_FS) += intermezzo subdir-$(CONFIG_MINIX_FS) += minix subdir-$(CONFIG_FAT_FS) += fat +subdir-$(CONFIG_UMSDOS_FS) += umsdos subdir-$(CONFIG_MSDOS_FS) += msdos subdir-$(CONFIG_VFAT_FS) += vfat subdir-$(CONFIG_BFS_FS) += bfs subdir-$(CONFIG_ISO9660_FS) += isofs subdir-$(CONFIG_DEVFS_FS) += devfs subdir-$(CONFIG_HFS_FS) += hfs +subdir-$(CONFIG_VXFS_FS) += freevxfs subdir-$(CONFIG_NFS_FS) += nfs subdir-$(CONFIG_NFSD) += nfsd subdir-$(CONFIG_LOCKD) += lockd subdir-$(CONFIG_NLS) += nls -subdir-$(CONFIG_UMSDOS_FS) += umsdos subdir-$(CONFIG_SYSV_FS) += sysv subdir-$(CONFIG_SMB_FS) += smbfs subdir-$(CONFIG_NCP_FS) += ncpfs @@ -51,6 +56,7 @@ subdir-$(CONFIG_UFS_FS) += ufs subdir-$(CONFIG_EFS_FS) += efs subdir-$(CONFIG_JFFS_FS) += jffs +subdir-$(CONFIG_JFFS2_FS) += jffs2 subdir-$(CONFIG_AFFS_FS) += affs subdir-$(CONFIG_ROMFS_FS) += romfs subdir-$(CONFIG_QNX4FS_FS) += qnx4 Index: attr.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/attr.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- attr.c 14 Jan 2001 16:25:42 -0000 1.1.1.1 +++ attr.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -11,6 +11,7 @@ #include <linux/smp_lock.h> #include <linux/dnotify.h> #include <linux/fcntl.h> +#include <linux/quotaops.h> /* Taken over from the old code... */ @@ -57,16 +58,21 @@ return retval; } -void inode_setattr(struct inode * inode, struct iattr * attr) +int inode_setattr(struct inode * inode, struct iattr * attr) { unsigned int ia_valid = attr->ia_valid; + int error = 0; + + if (ia_valid & ATTR_SIZE) { + error = vmtruncate(inode, attr->ia_size); + if (error) + goto out; + } if (ia_valid & ATTR_UID) inode->i_uid = attr->ia_uid; if (ia_valid & ATTR_GID) inode->i_gid = attr->ia_gid; - if (ia_valid & ATTR_SIZE) - vmtruncate(inode, attr->ia_size); if (ia_valid & ATTR_ATIME) inode->i_atime = attr->ia_atime; if (ia_valid & ATTR_MTIME) @@ -79,6 +85,8 @@ inode->i_mode &= ~S_ISGID; } mark_inode_dirty(inode); +out: + return error; } static int setattr_mask(unsigned int ia_valid) @@ -124,8 +132,13 @@ error = inode->i_op->setattr(dentry, attr); else { error = inode_change_ok(inode, attr); - if (!error) - inode_setattr(inode, attr); + if (!error) { + if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) || + (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) + error = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0; + if (!error) + error = inode_setattr(inode, attr); + } } unlock_kernel(); if (!error) { Index: read_write.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/read_write.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- read_write.c 25 Feb 2001 23:14:45 -0000 1.1.1.2 +++ read_write.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -15,6 +15,7 @@ #include <asm/uaccess.h> struct file_operations generic_ro_fops = { + llseek: generic_file_llseek, read: generic_file_read, mmap: generic_file_mmap, }; @@ -22,6 +23,34 @@ ssize_t generic_read_dir(struct file *filp, char *buf, size_t siz, loff_t *ppos) { return -EISDIR; +} + +loff_t generic_file_llseek(struct file *file, loff_t offset, int origin) +{ + long long retval; + + switch (origin) { + case 2: + offset += file->f_dentry->d_inode->i_size; + break; + case 1: + offset += file->f_pos; + } + retval = -EINVAL; + if (offset>=0 && offset<=file->f_dentry->d_inode->i_sb->s_maxbytes) { + if (offset != file->f_pos) { + file->f_pos = offset; + file->f_reada = 0; + file->f_version = ++event; + } + retval = offset; + } + return retval; +} + +loff_t no_llseek(struct file *file, loff_t offset, int origin) +{ + return -ESPIPE; } loff_t default_llseek(struct file *file, loff_t offset, int origin) Index: readdir.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/readdir.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- readdir.c 14 Jan 2001 16:25:38 -0000 1.1.1.1 +++ readdir.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -122,7 +122,7 @@ int count; }; -static int fillonedir(void * __buf, const char * name, int namlen, off_t offset, +static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset, ino_t ino, unsigned int d_type) { struct readdir_callback * buf = (struct readdir_callback *) __buf; @@ -183,7 +183,7 @@ int error; }; -static int filldir(void * __buf, const char * name, int namlen, off_t offset, +static int filldir(void * __buf, const char * name, int namlen, loff_t offset, ino_t ino, unsigned int d_type) { struct linux_dirent * dirent; @@ -261,7 +261,7 @@ int error; }; -static int filldir64(void * __buf, const char * name, int namlen, off_t offset, +static int filldir64(void * __buf, const char * name, int namlen, loff_t offset, ino_t ino, unsigned int d_type) { struct linux_dirent64 * dirent, d; Index: select.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/select.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- select.c 25 Feb 2001 23:14:46 -0000 1.1.1.2 +++ select.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -17,6 +17,7 @@ #include <linux/slab.h> #include <linux/smp_lock.h> #include <linux/poll.h> +#include <linux/personality.h> /* for STICKY_TIMEOUTS */ #include <linux/file.h> #include <asm/uaccess.h> @@ -260,7 +261,7 @@ fd_set_bits fds; char *bits; long timeout; - int ret, size; + int ret, size, max_fdset; timeout = MAX_SCHEDULE_TIMEOUT; if (tvp) { @@ -285,8 +286,10 @@ if (n < 0) goto out_nofds; - if (n > current->files->max_fdset) - n = current->files->max_fdset; + /* max_fdset can increase, so grab it once to avoid race */ + max_fdset = current->files->max_fdset; + if (n > max_fdset) + n = max_fdset; /* * We need 6 bitmaps (in/out/ex for both incoming and outgoing), @@ -414,7 +417,7 @@ int nchunks, nleft; /* Do a sanity check on nfds ... */ - if (nfds > current->files->max_fds) + if (nfds > NR_OPEN) return -EINVAL; if (timeout) { Index: stat.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/stat.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- stat.c 14 Jan 2001 16:24:33 -0000 1.1.1.1 +++ stat.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -4,6 +4,7 @@ * Copyright (C) 1991, 1992 Linus Torvalds */ +#include <linux/config.h> #include <linux/mm.h> #include <linux/errno.h> #include <linux/file.h> @@ -25,7 +26,7 @@ } -#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(__s390__) && !defined(__hppa__) +#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(CONFIG_ARCH_S390) && !defined(__hppa__) && !defined(__x86_64__) /* * For backward compatibility? Maybe this should be moved @@ -38,7 +39,7 @@ if (warncount > 0) { warncount--; - printk("VFS: Warning: %s using old stat() call. Recompile your binary.\n", + printk(KERN_WARNING "VFS: Warning: %s using old stat() call. Recompile your binary.\n", current->comm); } else if (warncount < 0) { /* it's laughable, but... */ @@ -53,7 +54,7 @@ SET_OLDSTAT_GID(tmp, inode->i_gid); tmp.st_rdev = kdev_t_to_nr(inode->i_rdev); #if BITS_PER_LONG == 32 - if (inode->i_size > 0x7fffffff) + if (inode->i_size > MAX_NON_LFS) return -EOVERFLOW; #endif tmp.st_size = inode->i_size; @@ -79,7 +80,7 @@ SET_STAT_GID(tmp, inode->i_gid); tmp.st_rdev = kdev_t_to_nr(inode->i_rdev); #if BITS_PER_LONG == 32 - if (inode->i_size > 0x7fffffff) + if (inode->i_size > MAX_NON_LFS) return -EOVERFLOW; #endif tmp.st_size = inode->i_size; @@ -126,7 +127,7 @@ } -#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(__s390__) && !defined(__hppa__) +#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(CONFIG_ARCH_S390) && !defined(__hppa__) && !defined(__x86_64__) /* * For backward compatibility? Maybe this should be moved * into arch/i386 instead? @@ -162,7 +163,7 @@ return error; } -#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(__s390__) && !defined(__hppa__) +#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(CONFIG_ARCH_S390) && !defined(__hppa__) && !defined(__x86_64__) /* * For backward compatibility? Maybe this should be moved @@ -200,7 +201,7 @@ return error; } -#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(__s390__) && !defined(__hppa__) +#if !defined(__alpha__) && !defined(__sparc__) && !defined(__ia64__) && !defined(CONFIG_ARCH_S390) && !defined(__hppa__) && !defined(__x86_64__) /* * For backward compatibility? Maybe this should be moved @@ -267,7 +268,7 @@ /* ---------- LFS-64 ----------- */ -#if !defined(__alpha__) && !defined (__ia64__) && !defined(__mips64) +#if !defined(__alpha__) && !defined(__ia64__) && !defined(__mips64) && !defined(__x86_64__) && !defined(CONFIG_ARCH_S390X) static long cp_new_stat64(struct inode * inode, struct stat64 * statbuf) { Index: super.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/super.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- super.c 25 Feb 2001 23:14:45 -0000 1.1.1.2 +++ super.c 9 Apr 2002 13:30:18 -0000 1.2 @@ -42,27 +42,17 @@ #define __NO_VERSION__ #include <linux/module.h> -/* - * We use a semaphore to synchronize all mount/umount - * activity - imagine the mess if we have a race between - * unmounting a filesystem and re-mounting it (or something - * else). - */ -static DECLARE_MUTEX(mount_sem); - [...1792 lines suppressed...] - int blivet; - - printk(KERN_NOTICE "Trying to unmount old root ... "); - blivet = do_umount(old_rootmnt, 1, 0); - if (!blivet) { - printk("okay\n"); - return 0; - } - printk(KERN_ERR "error %d\n", blivet); - return error; - } - /* FIXME: we should hold i_zombie on nd.dentry */ - move_vfsmnt(old_rootmnt, nd.dentry, nd.mnt, "/dev/root.old"); - mntput(old_rootmnt); - path_release(&nd); - return 0; + mntput(vfsmnt); } - -#endif |