tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: How PUFFS should deal with EDQUOT?



On Sat, Sep 27, 2014 at 04:36:18AM +0000, Emmanuel Dreyfus wrote:
> It seems I just have to call GOP_ALLOC in puffs_vnop_write()
> (see below)

Wait, there are a lot of missing bits such as this:
puffs_gop_alloc(struct vnode *vp, off_t off, off_t len,
               int flags, kauth_cred_t cred)
{
       return  _puffs_vnop_fallocate(vp, off, len);
} 

And this (also called by puffs_vnop_fallocate() after 
acquiring mutex on pn_sizemtx:

int
_puffs_vnop_fallocate(struct vnode *vp, off_t pos, off_t len)
{
       PUFFS_MSG_VARS(vn, fallocate);
       struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount);
       int error;

       PUFFS_MSG_ALLOC(vn, fallocate);
       fallocate_msg->pvnr_off = pos;
       fallocate_msg->pvnr_len = len;
       puffs_msg_setinfo(park_fallocate, PUFFSOP_VN,
           PUFFS_VN_FALLOCATE, VPTOPNC(vp));

       PUFFS_MSG_ENQUEUEWAIT2(pmp, park_fallocate, vp->v_data,
           NULL, error);
       error = checkerr(pmp, error, __func__);
       PUFFS_MSG_RELEASE(fallocate);

       return error;
}

At that point you may wonder why I do not send a clean patch with 
all the changes. It is because I need to revert the changes 
from hashlist to vcache as described in kern/49234 so that FUSE
work again, which produce a fuzzy patch.

-- 
Emmanuel Dreyfus
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index