Lines Matching refs:lo

72 	struct lo_inode *next; /* protected by lo->mutex */
73 struct lo_inode *prev; /* protected by lo->mutex */
77 uint64_t refcount; /* protected by lo->mutex */
96 struct lo_inode root; /* protected by lo->mutex */
171 struct lo_data *lo = (struct lo_data*) userdata;
176 if (lo->writeback &&
178 if (lo->debug)
182 if (lo->flock && conn->capable & FUSE_CAP_FLOCK_LOCKS) {
183 if (lo->debug)
191 struct lo_data *lo = (struct lo_data*) userdata;
193 while (lo->root.next != &lo->root) {
194 struct lo_inode* next = lo->root.next;
195 lo->root.next = next->next;
205 struct lo_data *lo = lo_data(req);
213 fuse_reply_attr(req, &buf, lo->timeout);
291 static struct lo_inode *lo_find(struct lo_data *lo, struct stat *st)
296 pthread_mutex_lock(&lo->mutex);
297 for (p = lo->root.next; p != &lo->root; p = p->next) {
305 pthread_mutex_unlock(&lo->mutex);
315 struct lo_data *lo = lo_data(req);
319 e->attr_timeout = lo->timeout;
320 e->entry_timeout = lo->timeout;
347 pthread_mutex_lock(&lo->mutex);
348 prev = &lo->root;
354 pthread_mutex_unlock(&lo->mutex);
439 struct lo_data *lo = lo_data(req);
446 e.attr_timeout = lo->timeout;
447 e.entry_timeout = lo->timeout;
459 pthread_mutex_lock(&lo->mutex);
461 pthread_mutex_unlock(&lo->mutex);
512 static void unref_inode(struct lo_data *lo, struct lo_inode *inode, uint64_t n)
517 pthread_mutex_lock(&lo->mutex);
528 pthread_mutex_unlock(&lo->mutex);
533 pthread_mutex_unlock(&lo->mutex);
539 struct lo_data *lo = lo_data(req);
549 unref_inode(lo, inode, nlookup);
599 struct lo_data *lo = lo_data(req);
619 if (lo->cache == CACHE_ALWAYS)
759 struct lo_data *lo = lo_data(req);
773 if (lo->cache == CACHE_NEVER)
775 else if (lo->cache == CACHE_ALWAYS)
802 struct lo_data *lo = lo_data(req);
810 if (lo->writeback && (fi->flags & O_ACCMODE) == O_WRONLY) {
821 if (lo->writeback && (fi->flags & O_APPEND))
830 if (lo->cache == CACHE_NEVER)
832 else if (lo->cache == CACHE_ALWAYS)
1187 struct lo_data lo = { .debug = 0,
1194 pthread_mutex_init(&lo.mutex, NULL);
1195 lo.root.next = lo.root.prev = &lo.root;
1196 lo.root.fd = -1;
1197 lo.cache = CACHE_NORMAL;
1222 if (fuse_opt_parse(&args, &lo, lo_opts, NULL)== -1)
1225 lo.debug = opts.debug;
1226 lo.root.refcount = 2;
1227 if (lo.source) {
1231 res = lstat(lo.source, &stat);
1234 lo.source);
1243 lo.source = strdup("/");
1244 if(!lo.source) {
1249 if (!lo.timeout_set) {
1250 switch (lo.cache) {
1252 lo.timeout = 0.0;
1256 lo.timeout = 1.0;
1260 lo.timeout = 86400.0;
1263 } else if (lo.timeout < 0) {
1265 lo.timeout);
1269 lo.root.fd = open(lo.source, O_PATH);
1270 if (lo.root.fd == -1) {
1272 lo.source);
1276 se = fuse_session_new(&args, &lo_oper, sizeof(lo_oper), &lo);
1306 if (lo.root.fd >= 0)
1307 close(lo.root.fd);
1309 free(lo.source);