nlm_prot_impl.c (230801) | nlm_prot_impl.c (241896) |
---|---|
1/*- 2 * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ 3 * Authors: Doug Rabson <dfr@rabson.org> 4 * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 14 unchanged lines hidden (view full) --- 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include "opt_inet6.h" 29 30#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ 3 * Authors: Doug Rabson <dfr@rabson.org> 4 * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 14 unchanged lines hidden (view full) --- 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include "opt_inet6.h" 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sys/nlm/nlm_prot_impl.c 230801 2012-01-31 02:11:05Z rmacklem $"); | 31__FBSDID("$FreeBSD: head/sys/nlm/nlm_prot_impl.c 241896 2012-10-22 17:50:54Z kib $"); |
32 33#include <sys/param.h> 34#include <sys/fail.h> 35#include <sys/fcntl.h> 36#include <sys/kernel.h> 37#include <sys/kthread.h> 38#include <sys/lockf.h> 39#include <sys/malloc.h> --- 1724 unchanged lines hidden (view full) --- 1764nlm_convert_to_fhandle_t(fhandle_t *fhp, struct netobj *p) 1765{ 1766 memcpy(fhp, p->n_bytes, sizeof(fhandle_t)); 1767} 1768 1769struct vfs_state { 1770 struct mount *vs_mp; 1771 struct vnode *vs_vp; | 32 33#include <sys/param.h> 34#include <sys/fail.h> 35#include <sys/fcntl.h> 36#include <sys/kernel.h> 37#include <sys/kthread.h> 38#include <sys/lockf.h> 39#include <sys/malloc.h> --- 1724 unchanged lines hidden (view full) --- 1764nlm_convert_to_fhandle_t(fhandle_t *fhp, struct netobj *p) 1765{ 1766 memcpy(fhp, p->n_bytes, sizeof(fhandle_t)); 1767} 1768 1769struct vfs_state { 1770 struct mount *vs_mp; 1771 struct vnode *vs_vp; |
1772 int vs_vfslocked; | |
1773 int vs_vnlocked; 1774}; 1775 1776static int 1777nlm_get_vfs_state(struct nlm_host *host, struct svc_req *rqstp, 1778 fhandle_t *fhp, struct vfs_state *vs, accmode_t accmode) 1779{ 1780 int error, exflags; 1781 struct ucred *cred = NULL, *credanon = NULL; 1782 1783 memset(vs, 0, sizeof(*vs)); 1784 1785 vs->vs_mp = vfs_getvfs(&fhp->fh_fsid); 1786 if (!vs->vs_mp) { 1787 return (ESTALE); 1788 } | 1772 int vs_vnlocked; 1773}; 1774 1775static int 1776nlm_get_vfs_state(struct nlm_host *host, struct svc_req *rqstp, 1777 fhandle_t *fhp, struct vfs_state *vs, accmode_t accmode) 1778{ 1779 int error, exflags; 1780 struct ucred *cred = NULL, *credanon = NULL; 1781 1782 memset(vs, 0, sizeof(*vs)); 1783 1784 vs->vs_mp = vfs_getvfs(&fhp->fh_fsid); 1785 if (!vs->vs_mp) { 1786 return (ESTALE); 1787 } |
1789 vs->vs_vfslocked = VFS_LOCK_GIANT(vs->vs_mp); | |
1790 1791 /* accmode == 0 means don't check, since it is an unlock. */ 1792 if (accmode != 0) { 1793 error = VFS_CHECKEXP(vs->vs_mp, 1794 (struct sockaddr *)&host->nh_addr, &exflags, &credanon, 1795 NULL, NULL); 1796 if (error) 1797 goto out; --- 59 unchanged lines hidden (view full) --- 1857 if (vs->vs_vp) { 1858 if (vs->vs_vnlocked) 1859 vput(vs->vs_vp); 1860 else 1861 vrele(vs->vs_vp); 1862 } 1863 if (vs->vs_mp) 1864 vfs_rel(vs->vs_mp); | 1788 1789 /* accmode == 0 means don't check, since it is an unlock. */ 1790 if (accmode != 0) { 1791 error = VFS_CHECKEXP(vs->vs_mp, 1792 (struct sockaddr *)&host->nh_addr, &exflags, &credanon, 1793 NULL, NULL); 1794 if (error) 1795 goto out; --- 59 unchanged lines hidden (view full) --- 1855 if (vs->vs_vp) { 1856 if (vs->vs_vnlocked) 1857 vput(vs->vs_vp); 1858 else 1859 vrele(vs->vs_vp); 1860 } 1861 if (vs->vs_mp) 1862 vfs_rel(vs->vs_mp); |
1865 VFS_UNLOCK_GIANT(vs->vs_vfslocked); | |
1866} 1867 1868static nlm4_stats 1869nlm_convert_error(int error) 1870{ 1871 1872 if (error == ESTALE) 1873 return nlm4_stale_fh; --- 580 unchanged lines hidden --- | 1863} 1864 1865static nlm4_stats 1866nlm_convert_error(int error) 1867{ 1868 1869 if (error == ESTALE) 1870 return nlm4_stale_fh; --- 580 unchanged lines hidden --- |