Whamcloud - gitweb
- commit not finished fid_is_local() related things, Nikita will finish OSD stuff...
authoryury <yury>
Fri, 30 Jun 2006 12:50:25 +0000 (12:50 +0000)
committeryury <yury>
Fri, 30 Jun 2006 12:50:25 +0000 (12:50 +0000)
lustre/fld/fld_handler.c
lustre/include/lustre_fid.h
lustre/include/lustre_fld.h

index 2f1153c..841e664 100644 (file)
@@ -94,7 +94,7 @@ static void __exit fld_mod_exit(void)
 }
 
 /* insert index entry and update cache */
-static int
+int
 fld_server_create(struct lu_server_fld *fld,
                   const struct lu_context *ctx,
                   __u64 seq, mdsno_t mds)
@@ -112,9 +112,10 @@ fld_server_create(struct lu_server_fld *fld,
         }
         RETURN(rc);
 }
+EXPORT_SYMBOL(fld_server_create);
 
 /* delete index entry and update cache */
-static int
+int
 fld_server_delete(struct lu_server_fld *fld,
                   const struct lu_context *ctx,
                   __u64 seq)
@@ -123,9 +124,10 @@ fld_server_delete(struct lu_server_fld *fld,
         fld_cache_delete(fld_cache, seq);
         RETURN(fld_index_delete(fld, ctx, seq));
 }
+EXPORT_SYMBOL(fld_server_delete);
 
 /* lookup in cache first and then issue index lookup */
-static int
+int
 fld_server_lookup(struct lu_server_fld *fld,
                   const struct lu_context *ctx,
                   __u64 seq, mdsno_t *mds)
@@ -144,6 +146,7 @@ fld_server_lookup(struct lu_server_fld *fld,
         rc = fld_index_lookup(fld, ctx, seq, mds);
         RETURN(rc);
 }
+EXPORT_SYMBOL(fld_server_lookup);
 
 static int
 fld_server_handle(struct lu_server_fld *fld,
index 3758af3..1d0bc27 100644 (file)
@@ -162,11 +162,27 @@ int seq_client_alloc_fid(struct lu_client_seq *seq,
                          struct lu_fid *fid);
 
 /* Fids common stuff */
-static inline int fid_is_local(struct lu_site *site,
+static inline int fid_is_local(const struct lu_context *ctx,
+                               struct lu_site *site,
                                const struct lu_fid *fid)
 {
-        /* XXX: fix this when fld is ready. */
-        return 1;
+        mdsno_t mds;
+        
+        if (site->ls_fld == NULL)
+                return 1;
+
+        /* XXX: this function checks also on-disk index, so it can't be used
+         * with spinlocks taken.  --umka */
+        rc = fld_server_lookup(site->ls_fld, ctx,
+                               fid_seq(fid), *mds);
+        if (rc) {
+                CERROR("can't lookup FLD for seq "LPU64", rc %d. "
+                       "Considering local fid anyway\n", fid_seq(fid),
+                        rc);
+                return 1;
+        }
+        
+        return (mds == ls_node_id);
 }
 
 void fid_to_le(struct lu_fid *dst, const struct lu_fid *src);
index f57fa28..2b1c298 100644 (file)
@@ -94,6 +94,18 @@ int fld_server_init(struct lu_server_fld *fld,
 void fld_server_fini(struct lu_server_fld *fld,
                      const struct lu_context *ctx);
 
+int fld_server_lookup(struct lu_server_fld *fld,
+                      const struct lu_context *ctx,
+                      __u64 seq, mdsno_t *mds);
+        
+int fld_server_create(struct lu_server_fld *fld,
+                      const struct lu_context *ctx,
+                      __u64 seq, mdsno_t mds);
+
+int fld_server_delete(struct lu_server_fld *fld,
+                      const struct lu_context *ctx,
+                      __u64 seq);
+
 /* client methods */
 int fld_client_init(struct lu_client_fld *fld,
                     const char *uuid,