209 { VOPNAME_FSYNC, { .vop_fsync = smbfs_fsync } },
210 { VOPNAME_INACTIVE, { .vop_inactive = smbfs_inactive } },
211 { VOPNAME_FID, { .error = fs_nosys } }, /* smbfs_fid, */
212 { VOPNAME_RWLOCK, { .vop_rwlock = smbfs_rwlock } },
213 { VOPNAME_RWUNLOCK, { .vop_rwunlock = smbfs_rwunlock } },
214 { VOPNAME_SEEK, { .vop_seek = smbfs_seek } },
215 { VOPNAME_FRLOCK, { .vop_frlock = smbfs_frlock } },
216 { VOPNAME_SPACE, { .vop_space = smbfs_space } },
217 { VOPNAME_REALVP, { .error = fs_nosys } }, /* smbfs_realvp, */
218 { VOPNAME_GETPAGE, { .error = fs_nosys } }, /* smbfs_getpage, */
219 { VOPNAME_PUTPAGE, { .error = fs_nosys } }, /* smbfs_putpage, */
220 { VOPNAME_MAP, { .error = fs_nosys } }, /* smbfs_map, */
221 { VOPNAME_ADDMAP, { .error = fs_nosys } }, /* smbfs_addmap, */
222 { VOPNAME_DELMAP, { .error = fs_nosys } }, /* smbfs_delmap, */
223 { VOPNAME_DUMP, { .error = fs_nosys } }, /* smbfs_dump, */
224 { VOPNAME_PATHCONF, { .vop_pathconf = smbfs_pathconf } },
225 { VOPNAME_PAGEIO, { .error = fs_nosys } }, /* smbfs_pageio, */
226 { VOPNAME_SETSECATTR, { .vop_setsecattr = smbfs_setsecattr } },
227 { VOPNAME_GETSECATTR, { .vop_getsecattr = smbfs_getsecattr } },
228 { VOPNAME_SHRLOCK, { .vop_shrlock = smbfs_shrlock } },
229 { NULL, NULL }
230 };
231
232 /*
233 * XXX
234 * When new and relevant functionality is enabled, we should be
235 * calling vfs_set_feature() to inform callers that pieces of
236 * functionality are available, per PSARC 2007/227.
237 */
238 /* ARGSUSED */
239 static int
240 smbfs_open(vnode_t **vpp, int flag, cred_t *cr, caller_context_t *ct)
241 {
242 smbnode_t *np;
243 vnode_t *vp;
244 smbfattr_t fa;
245 u_int32_t rights, rightsrcvd;
246 u_int16_t fid, oldfid;
247 int oldgenid;
248 struct smb_cred scred;
249 smbmntinfo_t *smi;
|
209 { VOPNAME_FSYNC, { .vop_fsync = smbfs_fsync } },
210 { VOPNAME_INACTIVE, { .vop_inactive = smbfs_inactive } },
211 { VOPNAME_FID, { .error = fs_nosys } }, /* smbfs_fid, */
212 { VOPNAME_RWLOCK, { .vop_rwlock = smbfs_rwlock } },
213 { VOPNAME_RWUNLOCK, { .vop_rwunlock = smbfs_rwunlock } },
214 { VOPNAME_SEEK, { .vop_seek = smbfs_seek } },
215 { VOPNAME_FRLOCK, { .vop_frlock = smbfs_frlock } },
216 { VOPNAME_SPACE, { .vop_space = smbfs_space } },
217 { VOPNAME_REALVP, { .error = fs_nosys } }, /* smbfs_realvp, */
218 { VOPNAME_GETPAGE, { .error = fs_nosys } }, /* smbfs_getpage, */
219 { VOPNAME_PUTPAGE, { .error = fs_nosys } }, /* smbfs_putpage, */
220 { VOPNAME_MAP, { .error = fs_nosys } }, /* smbfs_map, */
221 { VOPNAME_ADDMAP, { .error = fs_nosys } }, /* smbfs_addmap, */
222 { VOPNAME_DELMAP, { .error = fs_nosys } }, /* smbfs_delmap, */
223 { VOPNAME_DUMP, { .error = fs_nosys } }, /* smbfs_dump, */
224 { VOPNAME_PATHCONF, { .vop_pathconf = smbfs_pathconf } },
225 { VOPNAME_PAGEIO, { .error = fs_nosys } }, /* smbfs_pageio, */
226 { VOPNAME_SETSECATTR, { .vop_setsecattr = smbfs_setsecattr } },
227 { VOPNAME_GETSECATTR, { .vop_getsecattr = smbfs_getsecattr } },
228 { VOPNAME_SHRLOCK, { .vop_shrlock = smbfs_shrlock } },
229 { NULL, { NULL } }
230 };
231
232 /*
233 * XXX
234 * When new and relevant functionality is enabled, we should be
235 * calling vfs_set_feature() to inform callers that pieces of
236 * functionality are available, per PSARC 2007/227.
237 */
238 /* ARGSUSED */
239 static int
240 smbfs_open(vnode_t **vpp, int flag, cred_t *cr, caller_context_t *ct)
241 {
242 smbnode_t *np;
243 vnode_t *vp;
244 smbfattr_t fa;
245 u_int32_t rights, rightsrcvd;
246 u_int16_t fid, oldfid;
247 int oldgenid;
248 struct smb_cred scred;
249 smbmntinfo_t *smi;
|