else if (req->in.h.opcode == FUSE_GETDIR && !oh.error) process_getdir(req); 
static ssize_t fuse_dev_writev(struct file *file, const struct iovec *iov,			       unsigned long nr_segs, loff_t *off){	int err;	unsigned nbytes = iov_length(iov, nr_segs);	struct fuse_req *req;	struct fuse_out_header oh;	struct fuse_copy_state cs;	struct fuse_conn *fc = fuse_get_conn(file);	if (!fc)		return -ENODEV;	fuse_copy_init(&cs, 0, NULL, iov, nr_segs);	if (nbytes < sizeof(struct fuse_out_header))		return -EINVAL;	err = fuse_copy_one(&cs, &oh, sizeof(oh));	if (err)		goto err_finish;	err = -EINVAL;	if (!oh.unique || oh.error <= -1000 || oh.error > 0 ||	    oh.len != nbytes)		goto err_finish;	spin_lock(&fuse_lock);	req = request_find(fc, oh.unique);	err = -EINVAL;	if (!req)		goto err_unlock;	list_del_init(&req->list);	if (req->interrupted) {		request_end(fc, req);		fuse_copy_finish(&cs);		return -ENOENT;	}	req->out.h = oh;	req->locked = 1;	cs.req = req;	spin_unlock(&fuse_lock);	err = copy_out_args(&cs, &req->out, nbytes);	fuse_copy_finish(&cs);	spin_lock(&fuse_lock);	req->locked = 0;	if (!err) {		if (req->interrupted)			err = -ENOENT;	} else if (!req->interrupted)		req->out.h.error = -EIO;	request_end(fc, req);	return err ? err : nbytes; err_unlock:	spin_unlock(&fuse_lock); err_finish:	fuse_copy_finish(&cs);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e5e5558e923f35839108a12718494ecb73fb782f/dev.c/buggy/fs/fuse/dev.c