From mboxrd@z Thu Jan 1 00:00:00 1970 From: tobias@gambas-buch.de (Tobias Boege) Date: Tue, 29 Jan 2013 16:56:02 +0100 Subject: thread concurrent file operation In-Reply-To: References: Message-ID: <20130129155602.GA991@aurora> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Tue, 29 Jan 2013, Karaoui mohamed lamine wrote: > Hello, > > I was looking at how a syscall read/write was done, and i found this : > > .... > loff_t pos = file_pos_read(f.file); > ret = vfs_read(f.file, buf, count, &pos); > file_pos_write(f.file, pos); > fdput(f); > ... > > My questions are : > > Where did the locking go? I would have imaginated something like : > > .... > *lock(f);* > loff_t pos = file_pos_read(f.file); > ret = vfs_read(f.file, buf, count, &pos); > file_pos_write(f.file, pos); > fdput(f); > *unlock(f);* > ... > > If multiple threads try to read/write at the same time, they could > read/write at the same offset ? > Look some lines above: struct fd f = fdget(fd); Regards, Tobi