aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2010-05-06 17:37:23 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2010-05-06 17:37:23 +0000
commit945f418ab8a676a9675bf5b845514cf63dbc652a (patch)
tree781f2c991a11a3806fdb0891b7a615cb77ebe3ab /sys/ufs
parenta4bf5fb987611aeb78c422312b63b185e39982d7 (diff)
parente4b50334ec633d9ca7dbb970b48c72753a0a9d66 (diff)
downloadsrc-945f418ab8a676a9675bf5b845514cf63dbc652a.tar.gz
src-945f418ab8a676a9675bf5b845514cf63dbc652a.zip
Final update to current version of head in preparation for reintegration.
Notes
Notes: svn path=/projects/quota64/; revision=207707
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_softdep.c174
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c4
-rw-r--r--sys/ufs/ffs/ffs_vnops.c23
3 files changed, 181 insertions, 20 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 4a659f9de7ba..b05339b936ca 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -123,6 +123,21 @@ softdep_uninitialize()
}
void
+softdep_unmount(mp)
+ struct mount *mp;
+{
+
+}
+
+void
+softdep_setup_sbupdate(ump, fs, bp)
+ struct ufsmount *ump;
+ struct fs *fs;
+ struct buf *bp;
+{
+}
+
+void
softdep_setup_inomapdep(bp, ip, newinum)
struct buf *bp;
struct inode *ip;
@@ -267,6 +282,162 @@ softdep_setup_directory_change(bp, dp, ip, newinum, isrmdir)
panic("softdep_setup_directory_change called");
}
+void *
+softdep_setup_trunc(vp, length, flags)
+ struct vnode *vp;
+ off_t length;
+ int flags;
+{
+
+ panic("%s called", __FUNCTION__);
+
+ return (NULL);
+}
+
+int
+softdep_complete_trunc(vp, cookie)
+ struct vnode *vp;
+ void *cookie;
+{
+
+ panic("%s called", __FUNCTION__);
+
+ return (0);
+}
+
+void
+softdep_setup_blkfree(mp, bp, blkno, frags, wkhd)
+ struct mount *mp;
+ struct buf *bp;
+ ufs2_daddr_t blkno;
+ int frags;
+ struct workhead *wkhd;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_inofree(mp, bp, ino, wkhd)
+ struct mount *mp;
+ struct buf *bp;
+ ino_t ino;
+ struct workhead *wkhd;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_unlink(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_link(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_revert_link(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_rmdir(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_revert_rmdir(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_create(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_revert_create(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_mkdir(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_revert_mkdir(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+void
+softdep_setup_dotdot_link(dp, ip)
+ struct inode *dp;
+ struct inode *ip;
+{
+
+ panic("%s called", __FUNCTION__);
+}
+
+int
+softdep_prealloc(vp, waitok)
+ struct vnode *vp;
+ int waitok;
+{
+
+ panic("%s called", __FUNCTION__);
+
+ return (0);
+}
+
+int
+softdep_journal_lookup(mp, vpp)
+ struct mount *mp;
+ struct vnode **vpp;
+{
+
+ return (ENOENT);
+}
+
void
softdep_change_linkcnt(ip)
struct inode *ip;
@@ -3333,7 +3504,8 @@ cancel_jaddref(jaddref, inodedep, wkhd)
WORKLIST_INSERT(wkhd, &jsegdep->jd_list);
} else {
free_jsegdep(jsegdep);
- remove_from_journal(&jaddref->ja_list);
+ if (jaddref->ja_state & DEPCOMPLETE)
+ remove_from_journal(&jaddref->ja_list);
}
/*
* Leave NEWBLOCK jaddrefs on the inodedep so handle_workitem_remove
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index e40336863248..2963514508ee 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -126,8 +126,8 @@ static struct buf_ops ffs_ops = {
static const char *ffs_opts[] = { "acls", "async", "noatime", "noclusterr",
"noclusterw", "noexec", "export", "force", "from", "multilabel",
- "snapshot", "nosuid", "suiddir", "nosymfollow", "sync",
- "union", "nfsv4acls", NULL };
+ "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", "sync",
+ "union", NULL };
static int
ffs_mount(struct mount *mp)
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index e6617cbcdfa8..a2fee4ecb41f 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -75,9 +75,6 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/mount.h>
#include <sys/priv.h>
-#include <sys/proc.h>
-#include <sys/resourcevar.h>
-#include <sys/signalvar.h>
#include <sys/stat.h>
#include <sys/vmmeter.h>
#include <sys/vnode.h>
@@ -652,7 +649,6 @@ ffs_write(ap)
struct inode *ip;
struct fs *fs;
struct buf *bp;
- struct thread *td;
ufs_lbn_t lbn;
off_t osize;
int seqcount;
@@ -704,17 +700,8 @@ ffs_write(ap)
* Maybe this should be above the vnode op call, but so long as
* file servers have no limits, I don't think it matters.
*/
- td = uio->uio_td;
- if (vp->v_type == VREG && td != NULL) {
- PROC_LOCK(td->td_proc);
- if (uio->uio_offset + uio->uio_resid >
- lim_cur(td->td_proc, RLIMIT_FSIZE)) {
- psignal(td->td_proc, SIGXFSZ);
- PROC_UNLOCK(td->td_proc);
- return (EFBIG);
- }
- PROC_UNLOCK(td->td_proc);
- }
+ if (vn_rlimit_fsize(vp, uio, uio->uio_td))
+ return (EFBIG);
resid = uio->uio_resid;
osize = ip->i_size;
@@ -860,13 +847,15 @@ ffs_getpages(ap)
if (mreq->valid) {
if (mreq->valid != VM_PAGE_BITS_ALL)
vm_page_zero_invalid(mreq, TRUE);
- vm_page_lock_queues();
for (i = 0; i < pcount; i++) {
if (i != ap->a_reqpage) {
+ vm_page_lock(ap->a_m[i]);
+ vm_page_lock_queues();
vm_page_free(ap->a_m[i]);
+ vm_page_unlock_queues();
+ vm_page_unlock(ap->a_m[i]);
}
}
- vm_page_unlock_queues();
VM_OBJECT_UNLOCK(mreq->object);
return VM_PAGER_OK;
}