Lines Matching refs:rdir
98 struct p9_rdir *rdir;
103 if (!fid->rdir) {
104 rdir = kmalloc(sizeof(struct p9_rdir) + buflen, GFP_KERNEL);
106 if (rdir == NULL) {
111 if (!fid->rdir) {
112 rdir->buf = (uint8_t *)rdir + sizeof(struct p9_rdir);
113 mutex_init(&rdir->mutex);
114 rdir->head = rdir->tail = 0;
115 fid->rdir = (void *) rdir;
116 rdir = NULL;
119 kfree(rdir);
141 struct p9_rdir *rdir;
151 rdir = (struct p9_rdir *) fid->rdir;
153 err = mutex_lock_interruptible(&rdir->mutex);
157 if (rdir->tail == rdir->head) {
158 err = v9fs_file_readn(filp, rdir->buf, NULL,
163 rdir->head = 0;
164 rdir->tail = err;
166 while (rdir->head < rdir->tail) {
168 err = p9stat_read(rdir->buf + rdir->head,
169 rdir->tail - rdir->head, &st,
188 rdir->head += reclen;
194 mutex_unlock(&rdir->mutex);
213 struct p9_rdir *rdir;
225 rdir = (struct p9_rdir *) fid->rdir;
227 err = mutex_lock_interruptible(&rdir->mutex);
232 if (rdir->tail == rdir->head) {
233 err = p9_client_readdir(fid, rdir->buf, buflen,
238 rdir->head = 0;
239 rdir->tail = err;
242 while (rdir->head < rdir->tail) {
244 err = p9dirent_read(rdir->buf + rdir->head,
245 buflen - rdir->head, &curdirent,
271 rdir->head += err;
276 mutex_unlock(&rdir->mutex);