View | Details | Raw Unified | Return to bug 56074
Collapse All | Expand All

(-)linux-2.4.26-ow2/Makefile (-1 / +1 lines)
Lines 1-7 Link Here
1
VERSION = 2
1
VERSION = 2
2
PATCHLEVEL = 4
2
PATCHLEVEL = 4
3
SUBLEVEL = 26
3
SUBLEVEL = 26
4
EXTRAVERSION = -ow2
4
EXTRAVERSION = -ow3pre1
5
5
6
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
6
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
7
7
(-)linux-2.4.26-ow2/fs/file_table.c (+2 lines)
Lines 43-48 Link Here
43
	new_one:
43
	new_one:
44
		memset(f, 0, sizeof(*f));
44
		memset(f, 0, sizeof(*f));
45
		atomic_set(&f->f_count,1);
45
		atomic_set(&f->f_count,1);
46
		init_MUTEX(&f->f_pos_lock);
46
		f->f_version = ++event;
47
		f->f_version = ++event;
47
		f->f_uid = current->fsuid;
48
		f->f_uid = current->fsuid;
48
		f->f_gid = current->fsgid;
49
		f->f_gid = current->fsgid;
Lines 87-92 Link Here
87
	memset(filp, 0, sizeof(*filp));
88
	memset(filp, 0, sizeof(*filp));
88
	filp->f_mode   = mode;
89
	filp->f_mode   = mode;
89
	atomic_set(&filp->f_count, 1);
90
	atomic_set(&filp->f_count, 1);
91
	init_MUTEX(&filp->f_pos_lock);
90
	filp->f_dentry = dentry;
92
	filp->f_dentry = dentry;
91
	filp->f_uid    = current->fsuid;
93
	filp->f_uid    = current->fsuid;
92
	filp->f_gid    = current->fsgid;
94
	filp->f_gid    = current->fsgid;
(-)linux-2.4.26-ow2/fs/nfsd/vfs.c (+1 lines)
Lines 464-469 Link Here
464
	memset(filp, 0, sizeof(*filp));
464
	memset(filp, 0, sizeof(*filp));
465
	filp->f_op    = fops_get(inode->i_fop);
465
	filp->f_op    = fops_get(inode->i_fop);
466
	atomic_set(&filp->f_count, 1);
466
	atomic_set(&filp->f_count, 1);
467
	init_MUTEX(&filp->f_pos_lock);
467
	filp->f_dentry = dentry;
468
	filp->f_dentry = dentry;
468
	filp->f_vfsmnt = fhp->fh_export->ex_mnt;
469
	filp->f_vfsmnt = fhp->fh_export->ex_mnt;
469
	if (access & MAY_WRITE) {
470
	if (access & MAY_WRITE) {
(-)linux-2.4.26-ow2/fs/read_write.c (-4 / +22 lines)
Lines 100-106 Link Here
100
	if (file->f_op && file->f_op->llseek)
100
	if (file->f_op && file->f_op->llseek)
101
		fn = file->f_op->llseek;
101
		fn = file->f_op->llseek;
102
	lock_kernel();
102
	lock_kernel();
103
	down(&file->f_pos_lock);
103
	retval = fn(file, offset, origin);
104
	retval = fn(file, offset, origin);
105
	up(&file->f_pos_lock);
104
	unlock_kernel();
106
	unlock_kernel();
105
	return retval;
107
	return retval;
106
}
108
}
Lines 173-180 Link Here
173
			if (!ret) {
175
			if (!ret) {
174
				ssize_t (*read)(struct file *, char *, size_t, loff_t *);
176
				ssize_t (*read)(struct file *, char *, size_t, loff_t *);
175
				ret = -EINVAL;
177
				ret = -EINVAL;
176
				if (file->f_op && (read = file->f_op->read) != NULL)
178
				if (file->f_op && (read = file->f_op->read) != NULL) {
179
					down(&file->f_pos_lock);
177
					ret = read(file, buf, count, &file->f_pos);
180
					ret = read(file, buf, count, &file->f_pos);
181
					up(&file->f_pos_lock);
182
				}
178
			}
183
			}
179
		}
184
		}
180
		if (ret > 0)
185
		if (ret > 0)
Lines 199-206 Link Here
199
			if (!ret) {
204
			if (!ret) {
200
				ssize_t (*write)(struct file *, const char *, size_t, loff_t *);
205
				ssize_t (*write)(struct file *, const char *, size_t, loff_t *);
201
				ret = -EINVAL;
206
				ret = -EINVAL;
202
				if (file->f_op && (write = file->f_op->write) != NULL)
207
				if (file->f_op && (write = file->f_op->write) != NULL) {
208
					down(&file->f_pos_lock);
203
					ret = write(file, buf, count, &file->f_pos);
209
					ret = write(file, buf, count, &file->f_pos);
210
					up(&file->f_pos_lock);
211
				}
204
			}
212
			}
205
		}
213
		}
206
		if (ret > 0)
214
		if (ret > 0)
Lines 338-345 Link Here
338
	if (!file)
346
	if (!file)
339
		goto bad_file;
347
		goto bad_file;
340
	if (file->f_op && (file->f_mode & FMODE_READ) &&
348
	if (file->f_op && (file->f_mode & FMODE_READ) &&
341
	    (file->f_op->readv || file->f_op->read))
349
	    (file->f_op->readv || file->f_op->read)) {
350
		down(&file->f_pos_lock);
342
		ret = do_readv_writev(VERIFY_WRITE, file, vector, count);
351
		ret = do_readv_writev(VERIFY_WRITE, file, vector, count);
352
		up(&file->f_pos_lock);
353
	}
343
	fput(file);
354
	fput(file);
344
355
345
bad_file:
356
bad_file:
Lines 358-365 Link Here
358
	if (!file)
369
	if (!file)
359
		goto bad_file;
370
		goto bad_file;
360
	if (file->f_op && (file->f_mode & FMODE_WRITE) &&
371
	if (file->f_op && (file->f_mode & FMODE_WRITE) &&
361
	    (file->f_op->writev || file->f_op->write))
372
	    (file->f_op->writev || file->f_op->write)) {
373
		down(&file->f_pos_lock);
362
		ret = do_readv_writev(VERIFY_READ, file, vector, count);
374
		ret = do_readv_writev(VERIFY_READ, file, vector, count);
375
		up(&file->f_pos_lock);
376
	}
363
	fput(file);
377
	fput(file);
364
378
365
bad_file:
379
bad_file:
Lines 392-398 Link Here
392
		goto out;
406
		goto out;
393
	if (pos < 0)
407
	if (pos < 0)
394
		goto out;
408
		goto out;
409
	down(&file->f_pos_lock);
395
	ret = read(file, buf, count, &pos);
410
	ret = read(file, buf, count, &pos);
411
	up(&file->f_pos_lock);
396
	if (ret > 0)
412
	if (ret > 0)
397
		dnotify_parent(file->f_dentry, DN_ACCESS);
413
		dnotify_parent(file->f_dentry, DN_ACCESS);
398
out:
414
out:
Lines 424-430 Link Here
424
	if (pos < 0)
440
	if (pos < 0)
425
		goto out;
441
		goto out;
426
442
443
	down(&file->f_pos_lock);
427
	ret = write(file, buf, count, &pos);
444
	ret = write(file, buf, count, &pos);
445
	up(&file->f_pos_lock);
428
	if (ret > 0)
446
	if (ret > 0)
429
		dnotify_parent(file->f_dentry, DN_MODIFY);
447
		dnotify_parent(file->f_dentry, DN_MODIFY);
430
out:
448
out:
(-)linux-2.4.26-ow2/include/linux/fs.h (+2 lines)
Lines 584-589 Link Here
584
	/* preallocated helper kiobuf to speedup O_DIRECT */
584
	/* preallocated helper kiobuf to speedup O_DIRECT */
585
	struct kiobuf		*f_iobuf;
585
	struct kiobuf		*f_iobuf;
586
	long			f_iobuf_lock;
586
	long			f_iobuf_lock;
587
588
	struct semaphore	f_pos_lock;
587
};
589
};
588
extern spinlock_t files_lock;
590
extern spinlock_t files_lock;
589
#define file_list_lock() spin_lock(&files_lock);
591
#define file_list_lock() spin_lock(&files_lock);

Return to bug 56074