linux/fs/ceph/debugfs.c
<<
on v.6./spa> .6./form .6.a on v.6 href="../linux+v3.7.5/fs/ceph/debugfs.c">on v.6.img src="../.static/gfx/right.png" alt=">>">on./spa> on.spa> class="lxr_search">on v="+search" method="post" onsubmit="return do_search(this);">on v.6.input typon>hidden" namon>navtarget" option>">on v.6.input typon>text" namon>search" idn>search">on v.6.butt2submit">Search on.spa> class="lxr_prefs" .6.a href="+prefs?return=fs/ceph/debugfs.c"on v.6 onclick="return ajax_prefs();">on v.6Prefs .6./a>on./spa> v.6 6./div v.6 6.form ac >="ajax+*" method="post" onsubmit="return false;">on.input typon>hidden" namon>ajax_lookup" idn>ajax_lookup" option>">o v.6 6./form o v.6 6.div class="headingbott2m">
search_results" class="search_results" . v.6 6./div .div idn>content"> .div idn>file_contents"
84/a3/78c19fcfa8c1214681e8b9acfd5cdbfebff4_3/0"
L1" class="line" namon>L1">6 61./a>#include <linux/ceph/ceph_debug.h./a>>
L2" class="line" namon>L2">6 62./a>oL3" class="line" namon>L3">6 63./a>#include <linux/device.h./a>>
L4" class="line" namon>L4">6 64./a>#include <linux/slab.h./a>>
L5" class="line" namon>L5">6 65./a>#include <linux/module.h./a>>
L6" class="line" namon>L6">6 66./a>#include <linux/ctypo.h./a>>
L7" class="line" namon>L7">6 67./a>#include <linux/debugfs.h./a>>
L8" class="line" namon>L8">6 68./a>#include <linux/seq_file.h./a>>
L9" class="line" namon>L9">6 69./a>oL10" class="line" namon>L10">6 v3.8a>#include <linux/ceph/libceph.h./a>>
L11" class="line" namon>L11">6 11./a>#include <linux/ceph/mon_client.h./a>>
L12" class="line" namon>L12">6 12./a>#include <linux/ceph/auth.h./a>>
L13" class="line" namon>L13">6 13./a>#include <linux/ceph/debugfs.h./a>>
L14" class="line" namon>L14">6 14./a>oL15" class="line" namon>L15">6 15./a>#include "super.h./a>"oL16" class="line" namon>L16">6 16./a>oL17" class="line" namon>L17">6 17./a>#ifdef6.a href="+code=CONFIG_DEBUG_FS" class="sref">CONFIG_DEBUG_FS./a>oL18" class="line" namon>L18">6 18./a>oL19" class="line" namon>L19">6 19./a>#include "mds_client.h./a>"oL20" class="line" namon>L20">6 20./a>oL21" class="line" namon>L21">6 21./a>static int6.a href="+code=mdsmap_show" class="sref">mdsmap_show./a>(struct6.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, void *.a href="+code=p" class="sref">p./a>)oL22" class="line" namon>L22">6 22./a>{oL23" class="line" namon>L23">6 23./a>        int6.a href="+code=i" class="sref">i./a>;oL24" class="line" namon>L24">6 24./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6.a href="+code=s" class="sref">s./a>->.a href="+code=private" class="sref">private./a>;oL25" class="line" namon>L25">6 25./a>oL26" class="line" namon>L26">6 26./a>        if (.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a> ==6.a href="+code=NULL" class="sref">NULL./a> ||6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a> ==6.a href="+code=NULL" class="sref">NULL./a>)oL27" class="line" namon>L27">6 27./a>                return 0;oL28" class="line" namon>L28">6 28./a>        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"epoch %d\n"
,6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_epoch" class="sref">m_epoch./a>);oL29" class="line" namon>L29">6 29./a>        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"root %d\n"
,6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_root" class="sref">m_root./a>);oL30" class="line" namon>L30">6 30./a>        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"session_timeout %d\n"
,oL31" class="line" namon>L31">6 31./a>                       .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_session_timeout" class="sref">m_session_timeout./a>);oL32" class="line" namon>L32">6 32./a>        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"session_autoclose %d\n"
,oL33" class="line" namon>L33">6 33./a>                       .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_session_autoclose" class="sref">m_session_autoclose./a>);oL34" class="line" namon>L34">6 34./a>        for (.a href="+code=i" class="sref">i./a> =60;6.a href="+code=i" class="sref">i./a> < .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_max_mds" class="sref">m_max_mds./a>;6.a href="+code=i" class="sref">i./a>++) {oL35" class="line" namon>L35">6 35./a>                struct6.a href="+code=ceph_entity_addr" class="sref">ceph_entity_addr./a> *.a href="+code=addr" class="sref">addr./a> =oL36" class="line" namon>L36">6 36./a>                        &.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_info" class="sref">m_info./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=addr" class="sref">addr./a>;oL37" class="line" namon>L37">6 37./a>                int6.a href="+code=state" class="sref">state./a> =6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mdsmap" class="sref">mdsmap./a>->.a href="+code=m_info" class="sref">m_info./a>[.a href="+code=i" class="sref">i./a>]..a href="+code=state" class="sref">state./a>;oL38" class="line" namon>L38">6 38./a>oL39" class="line" namon>L39">6 39./a>                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"\tmds%d\t%s\t(%s)\n"
,6.a href="+code=i" class="sref">i./a>,oL40" class="line" namon>L40">6 40./a>                               .a href="+code=ceph_pr_addr" class="sref">ceph_pr_addr./a>(&.a href="+code=addr" class="sref">addr./a>->.a href="+code=in_addr" class="sref">in_addr./a>),oL41" class="line" namon>L41">6 41./a>                               .a href="+code=ceph_mds_state_namo" class="sref">ceph_mds_state_namo./a>(.a href="+code=state" class="sref">state./a>));oL42" class="line" namon>L42">6 42./a>        }oL43" class="line" namon>L43">6 43./a>        return 0;oL44" class="line" namon>L44">6 44./a>}oL45" class="line" namon>L45">6 45./a>oL46" class="line" namon>L46">6 46./a>.spa> class="comment">/*./spa>
 L47" class="line" namon>L47">6 47./a>.spa> class="comment"> * mdsc debugfs./spa>
 L48" class="line" namon>L48">6 48./a>.spa> class="comment"> */./spa>
 L49" class="line" namon>L49">6 49./a>static int6.a href="+code=mdsc_show" class="sref">mdsc_show./a>(struct6.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, void *.a href="+code=p" class="sref">p./a>)oL50" class="line" namon>L50">6 50./a>{oL51" class="line" namon>L51">6 51./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6.a href="+code=s" class="sref">s./a>->.a href="+code=private" class="sref">private./a>;oL52" class="line" namon>L52">6 52./a>        struct6.a href="+code=ceph_mds_client" class="sref">ceph_mds_client./a> *.a href="+code=mdsc" class="sref">mdsc./a> =6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>;oL53" class="line" namon>L53">6 53./a>        struct6.a href="+code=ceph_mds_request" class="sref">ceph_mds_request./a> *.a href="+code=req" class="sref">req./a>;oL54" class="line" namon>L54">6 54./a>        struct6.a href="+code=rb_node" class="sref">rb_node./a> *.a href="+code=rp" class="sref">rp./a>;oL55" class="line" namon>L55">6 55./a>        int6.a href="+code=pathlen" class="sref">pathlen./a>;oL56" class="line" namon>L56">6 56./a>        .a href="+code=u64" class="sref">u64./a> .a href="+code=pathbase" class="sref">pathbase./a>;oL57" class="line" namon>L57">6 57./a>        char *.a href="+code=path" class="sref">path./a>;oL58" class="line" namon>L58">6 58./a>oL59" class="line" namon>L59">6 59./a>        .a href="+code=mutex_lock" class="sref">mutex_lock./a>(&.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mutex" class="sref">mutex./a>);oL60" class="line" namon>L60">6 60./a>        for (.a href="+code=rp" class="sref">rp./a> =6.a href="+code=rb_first" class="sref">rb_first./a>(&.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=request_tree" class="sref">request_tree./a>);6.a href="+code=rp" class="sref">rp./a>;6.a href="+code=rp" class="sref">rp./a> =6.a href="+code=rb_next" class="sref">rb_next./a>(.a href="+code=rp" class="sref">rp./a>)) {oL61" class="line" namon>L61">6 61./a>                .a href="+code=req" class="sref">req./a> =6.a href="+code=rb_entry" class="sref">rb_entry./a>(.a href="+code=rp" class="sref">rp./a>, struct6.a href="+code=ceph_mds_request" class="sref">ceph_mds_request./a>,6.a href="+code=r_node" class="sref">r_node./a>);oL62" class="line" namon>L62">6 62./a>oL63" class="line" namon>L63">6 63./a>                if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_request" class="sref">r_request./a> && .a href="+code=req" class="sref">req./a>->.a href="+code=r_session" class="sref">r_session./a>)oL64" class="line" namon>L64">6 64./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"%lld\tmds%d\t"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_tid" class="sref">r_tid./a>,oL65" class="line" namon>L65">6 65./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_session" class="sref">r_session./a>->.a href="+code=s_mds" class="sref">s_mds./a>);oL66" class="line" namon>L66">6 66./a>                else if (!.a href="+code=req" class="sref">req./a>->.a href="+code=r_request" class="sref">r_request./a>)oL67" class="line" namon>L67">6 67./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"%lld\t(no request)\t"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_tid" class="sref">r_tid./a>);oL68" class="line" namon>L68">6 68./a>                elseoL69" class="line" namon>L69">6 69./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"%lld\t(no session)\t"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_tid" class="sref">r_tid./a>);oL70" class="line" namon>L70">6 70./a>oL71" class="line" namon>L71">6 71./a>                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"%s"
,6.a href="+code=ceph_mds_op_namo" class="sref">ceph_mds_op_namo./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_op" class="sref">r_op./a>));oL72" class="line" namon>L72">6 72./a>oL73" class="line" namon>L73">6 73./a>                if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_got_unsafe" class="sref">r_got_unsafe./a>)oL74" class="line" namon>L74">6 74./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"\t(unsafe)"
);oL75" class="line" namon>L75">6 75./a>                elseoL76" class="line" namon>L76">6 76./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"\t"
);oL77" class="line" namon>L77">6 77./a>oL78" class="line" namon>L78">6 78./a>                if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_inode" class="sref">r_inode./a>) {oL79" class="line" namon>L79">6 79./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" #%llx"
,6.a href="+code=ceph_ino" class="sref">ceph_ino./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_inode" class="sref">r_inode./a>));oL80" class="line" namon>L80">6 80./a>                } else if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>) {oL81" class="line" namon>L81">6 81./a>                        .a href="+code=path" class="sref">path./a> =6.a href="+code=ceph_mdsc_build_path" class="sref">ceph_mdsc_build_path./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>, &.a href="+code=pathlen" class="sref">pathlen./a>,oL82" class="line" namon>L82">6 82./a>                                                    &.a href="+code=pathbase" class="sref">pathbase./a>, 0);oL83" class="line" namon>L83">6 83./a>                        if (.a href="+code=IS_ERR" class="sref">IS_ERR./a>(.a href="+code=path" class="sref">path./a>))oL84" class="line" namon>L84">6 84./a>                                .a href="+code=path" class="sref">path./a> =6.a href="+code=NULL" class="sref">NULL./a>;oL85" class="line" namon>L85">6 85./a>                        .a href="+code=spin_lock" class="sref">spin_lock./a>(&.a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>->.a href="+code=d_lock" class="sref">d_lock./a>);oL86" class="line" namon>L86">6 86./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" #%llx/%.*s (%s)"
,oL87" class="line" namon>L87">6 87./a>                                   .a href="+code=ceph_ino" class="sref">ceph_ino./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>->.a href="+code=d_parent" class="sref">d_parent./a>->.a href="+code=d_inode" class="sref">d_inode./a>),oL88" class="line" namon>L88">6 88./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=len" class="sref">len./a>,oL89" class="line" namon>L89">6 89./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=namo" class="sref">namo./a>,oL90" class="line" namon>L90">6 90./a>                                   .a href="+code=path" class="sref">path./a> ? .a href="+code=path" class="sref">path./a> : .spa> class="string">""
);oL91" class="line" namon>L91">6 91./a>                        .a href="+code=spin_unlock" class="sref">spin_unlock./a>(&.a href="+code=req" class="sref">req./a>->.a href="+code=r_dentry" class="sref">r_dentry./a>->.a href="+code=d_lock" class="sref">d_lock./a>);oL92" class="line" namon>L92">6 92./a>                        .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=path" class="sref">path./a>);oL93" class="line" namon>L93">6 93./a>                } else if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_path1" class="sref">r_path1./a>) {oL94" class="line" namon>L94">6 94./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" #%llx/%s"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_ino1" class="sref">r_ino1./a>..a href="+code=ino" class="sref">ino./a>,oL95" class="line" namon>L95">6 95./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_path1" class="sref">r_path1./a>);oL96" class="line" namon>L96">6 96./a>                }oL97" class="line" namon>L97">6 97./a>oL98" class="line" namon>L98">6 98./a>                if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>) {oL99" class="line" namon>L99">6 99./a>                        .a href="+code=path" class="sref">path./a> =6.a href="+code=ceph_mdsc_build_path" class="sref">ceph_mdsc_build_path./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>, &.a href="+code=pathlen" class="sref">pathlen./a>,oL100" class="line" namon>L100">6100./a>                                                    &.a href="+code=pathbase" class="sref">pathbase./a>, 0);oL101" class="line" namon>L101">6101./a>                        if (.a href="+code=IS_ERR" class="sref">IS_ERR./a>(.a href="+code=path" class="sref">path./a>))oL102" class="line" namon>L102">6102./a>                                .a href="+code=path" class="sref">path./a> =6.a href="+code=NULL" class="sref">NULL./a>;oL103" class="line" namon>L103">6103./a>                        .a href="+code=spin_lock" class="sref">spin_lock./a>(&.a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>->.a href="+code=d_lock" class="sref">d_lock./a>);oL104" class="line" namon>L104">6104./a>                        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" #%llx/%.*s (%s)"
,oL105" class="line" namon>L105">6105./a>                           .a href="+code=ceph_ino" class="sref">ceph_ino./a>(.a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry_dir" class="sref">r_old_dentry_dir./a>),oL106" class="line" namon>L106">6106./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=len" class="sref">len./a>,oL107" class="line" namon>L107">6107./a>                                   .a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=namo" class="sref">namo./a>,oL108" class="line" namon>L108">6108./a>                                   .a href="+code=path" class="sref">path./a> ? .a href="+code=path" class="sref">path./a> : .spa> class="string">""
);oL109" class="line" namon>L109">6109./a>                        .a href="+code=spin_unlock" class="sref">spin_unlock./a>(&.a href="+code=req" class="sref">req./a>->.a href="+code=r_old_dentry" class="sref">r_old_dentry./a>->.a href="+code=d_lock" class="sref">d_lock./a>);oL110" class="line" namon>L110">6110./a>                        .a href="+code=kfree" class="sref">kfree./a>(.a href="+code=path" class="sref">path./a>);oL111" class="line" namon>L111">6111./a>                } else if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_path2" class="sref">r_path2./a>) {oL112" class="line" namon>L112">6112./a>                        if (.a href="+code=req" class="sref">req./a>->.a href="+code=r_ino2" class="sref">r_ino2./a>..a href="+code=ino" class="sref">ino./a>)oL113" class="line" namon>L113">6113./a>                                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" #%llx/%s"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_ino2" class="sref">r_ino2./a>..a href="+code=ino" class="sref">ino./a>,oL114" class="line" namon>L114">6114./a>                                           .a href="+code=req" class="sref">req./a>->.a href="+code=r_path2" class="sref">r_path2./a>);oL115" class="line" namon>L115">6115./a>                        elseoL116" class="line" namon>L116">6116./a>                                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">" %s"
,6.a href="+code=req" class="sref">req./a>->.a href="+code=r_path2" class="sref">r_path2./a>);oL117" class="line" namon>L117">6117./a>                }oL118" class="line" namon>L118">6118./a>oL119" class="line" namon>L119">6119./a>                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"\n"
);oL120" class="line" namon>L120">6120./a>        }oL121" class="line" namon>L121">6121./a>        .a href="+code=mutex_unlock" class="sref">mutex_unlock./a>(&.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=mutex" class="sref">mutex./a>);oL122" class="line" namon>L122">6122./a>oL123" class="line" namon>L123">6123./a>        return 0;oL124" class="line" namon>L124">6124./a>}oL125" class="line" namon>L125">6125./a>oL126" class="line" namon>L126">6126./a>static int6.a href="+code=caps_show" class="sref">caps_show./a>(struct6.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, void *.a href="+code=p" class="sref">p./a>)oL127" class="line" namon>L127">6127./a>{oL128" class="line" namon>L128">6128./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6.a href="+code=s" class="sref">s./a>->.a href="+code=private" class="sref">private./a>;oL129" class="line" namon>L129">6129./a>        int6.a href="+code=total" class="sref">total./a>, .a href="+code=avail" class="sref">avail./a>, .a href="+code=used" class="sref">used./a>, .a href="+code=reserved" class="sref">reserved./a>, .a href="+code=min" class="sref">min./a>;oL130" class="line" namon>L130">6130./a>oL131" class="line" namon>L131">6131./a>        .a href="+code=ceph_reserva	  >_status" class="sref">ceph_reserva	  >_status./a>(.a href="+code=fsc" class="sref">fsc./a>, &.a href="+code=total" class="sref">total./a>, &.a href="+code=avail" class="sref">avail./a>, &.a href="+code=used" class="sref">used./a>, &.a href="+code=reserved" class="sref">reserved./a>, &.a href="+code=min" class="sref">min./a>);oL132" class="line" namon>L132">6132./a>        .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"total\t\t%d\n"
oL133" class="line" namon>L133">6133./a>                   .spa> class="string">"avail\t\t%d\n"
oL134" class="line" namon>L134">6134./a>                   .spa> class="string">"used\t\t%d\n"
oL135" class="line" namon>L135">6135./a>                   .spa> class="string">"reserved\t%d\n"
oL136" class="line" namon>L136">6136./a>                   .spa> class="string">"min\t%d\n"
,oL137" class="line" namon>L137">6137./a>                   .a href="+code=total" class="sref">total./a>, .a href="+code=avail" class="sref">avail./a>, .a href="+code=used" class="sref">used./a>, .a href="+code=reserved" class="sref">reserved./a>, .a href="+code=min" class="sref">min./a>);oL138" class="line" namon>L138">6138./a>        return 0;oL139" class="line" namon>L139">6139./a>}oL140" class="line" namon>L140">6140./a>oL141" class="line" namon>L141">6141./a>static int6.a href="+code=dentry_lru_show" class="sref">dentry_lru_show./a>(struct6.a href="+code=seq_file" class="sref">seq_file./a> *.a href="+code=s" class="sref">s./a>, void *.a href="+code=ptr" class="sref">ptr./a>)oL142" class="line" namon>L142">6142./a>{oL143" class="line" namon>L143">6143./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6.a href="+code=s" class="sref">s./a>->.a href="+code=private" class="sref">private./a>;oL144" class="line" namon>L144">6144./a>        struct6.a href="+code=ceph_mds_client" class="sref">ceph_mds_client./a> *.a href="+code=mdsc" class="sref">mdsc./a> =6.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mdsc" class="sref">mdsc./a>;oL145" class="line" namon>L145">6145./a>        struct6.a href="+code=ceph_dentry_info" class="sref">ceph_dentry_info./a> *.a href="+code=di" class="sref">di./a>;oL146" class="line" namon>L146">6146./a>oL147" class="line" namon>L147">6147./a>        .a href="+code=spin_lock" class="sref">spin_lock./a>(&.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=dentry_lru_lock" class="sref">dentry_lru_lock./a>);oL148" class="line" namon>L148">6148./a>        .a href="+code=list_for_each_entry" class="sref">list_for_each_entry./a>(.a href="+code=di" class="sref">di./a>, &.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=dentry_lru" class="sref">dentry_lru./a>, .a href="+code=lru" class="sref">lru./a>) {oL149" class="line" namon>L149">6149./a>                struct6.a href="+code=dentry" class="sref">dentry./a> *.a href="+code=dentry" class="sref">dentry./a> =6.a href="+code=di" class="sref">di./a>->.a href="+code=dentry" class="sref">dentry./a>;oL150" class="line" namon>L150">6150./a>                .a href="+code=seq_printf" class="sref">seq_printf./a>(.a href="+code=s" class="sref">s./a>, .spa> class="string">"%p %p\t%.*s\n"
,oL151" class="line" namon>L151">6151./a>                           .a href="+code=di" class="sref">di./a>, .a href="+code=dentry" class="sref">dentry./a>, .a href="+code=dentry" class="sref">dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=len" class="sref">len./a>, .a href="+code=dentry" class="sref">dentry./a>->.a href="+code=d_namo" class="sref">d_namo./a>..a href="+code=namo" class="sref">namo./a>);oL152" class="line" namon>L152">6152./a>        }oL153" class="line" namon>L153">6153./a>        .a href="+code=spin_unlock" class="sref">spin_unlock./a>(&.a href="+code=mdsc" class="sref">mdsc./a>->.a href="+code=dentry_lru_lock" class="sref">dentry_lru_lock./a>);oL154" class="line" namon>L154">6154./a>oL155" class="line" namon>L155">6155./a>        return 0;oL156" class="line" namon>L156">6156./a>}oL157" class="line" namon>L157">6157./a>oL158" class="line" namon>L158">6158./a>.a href="+code=CEPH_DEFINE_SHOW_FUNC" class="sref">CEPH_DEFINE_SHOW_FUNC./a>(.a href="+code=mdsmap_show" class="sref">mdsmap_show./a>)oL159" class="line" namon>L159">6159./a>.a href="+code=CEPH_DEFINE_SHOW_FUNC" class="sref">CEPH_DEFINE_SHOW_FUNC./a>(.a href="+code=mdsc_show" class="sref">mdsc_show./a>)oL160" class="line" namon>L160">6160./a>.a href="+code=CEPH_DEFINE_SHOW_FUNC" class="sref">CEPH_DEFINE_SHOW_FUNC./a>(.a href="+code=caps_show" class="sref">caps_show./a>)oL161" class="line" namon>L161">6161./a>.a href="+code=CEPH_DEFINE_SHOW_FUNC" class="sref">CEPH_DEFINE_SHOW_FUNC./a>(.a href="+code=dentry_lru_show" class="sref">dentry_lru_show./a>)oL162" class="line" namon>L162">6162./a>oL163" class="line" namon>L163">6163./a>oL164" class="line" namon>L164">6164./a>.spa> class="comment">/*./spa>
 L165" class="line" namon>L165">6165./a>.spa> class="comment"> * debugfs./spa>
 L166" class="line" namon>L166">6166./a>.spa> class="comment"> */./spa>
 L167" class="line" namon>L167">6167./a>static int6.a href="+code=conges	  >_kb_set" class="sref">conges	  >_kb_set./a>(void *.a href="+code=data" class="sref">data./a>, .a href="+code=u64" class="sref">u64./a> .a href="+code=val" class="sref">val./a>)oL168" class="line" namon>L168">6168./a>{oL169" class="line" namon>L169">6169./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *).a href="+code=data" class="sref">data./a>;oL170" class="line" namon>L170">6170./a>oL171" class="line" namon>L171">6171./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mount_op	  >s" class="sref">mount_op	  >s./a>->.a href="+code=conges	  >_kb" class="sref">conges	  >_kb./a> =6(int).a href="+code=val" class="sref">val./a>;oL172" class="line" namon>L172">6172./a>        return 0;oL173" class="line" namon>L173">6173./a>}oL174" class="line" namon>L174">6174./a>oL175" class="line" namon>L175">6175./a>static int6.a href="+code=conges	  >_kb_get" class="sref">conges	  >_kb_get./a>(void *.a href="+code=data" class="sref">data./a>, .a href="+code=u64" class="sref">u64./a> *.a href="+code=val" class="sref">val./a>)oL176" class="line" namon>L176">6176./a>{oL177" class="line" namon>L177">6177./a>        struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a> =6(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *).a href="+code=data" class="sref">data./a>;oL178" class="line" namon>L178">6178./a>oL179" class="line" namon>L179">6179./a>        *.a href="+code=val" class="sref">val./a> =6(.a href="+code=u64" class="sref">u64./a>).a href="+code=fsc" class="sref">fsc./a>->.a href="+code=mount_op	  >s" class="sref">mount_op	  >s./a>->.a href="+code=conges	  >_kb" class="sref">conges	  >_kb./a>;oL180" class="line" namon>L180">6180./a>        return 0;oL181" class="line" namon>L181">6181./a>}oL182" class="line" namon>L182">6182./a>oL183" class="line" namon>L183">6183./a>.a href="+code=DEFINE_SIMPLE_ATTRIBUTE" class="sref">DEFINE_SIMPLE_ATTRIBUTE./a>(.a href="+code=conges	  >_kb_fops" class="sref">conges	  >_kb_fops./a>, .a href="+code=conges	  >_kb_get" class="sref">conges	  >_kb_get./a>,oL184" class="line" namon>L184">6184./a>                        .a href="+code=conges	  >_kb_set" class="sref">conges	  >_kb_set./a>, .spa> class="string">"%llu\n"
);oL185" class="line" namon>L185">6185./a>oL186" class="line" namon>L186">6186./a>oL187" class="line" namon>L187">6187./a>void .a href="+code=ceph_fs_debugfs_cleanup" class="sref">ceph_fs_debugfs_cleanup./a>(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a>)oL188" class="line" namon>L188">6188./a>{oL189" class="line" namon>L189">6189./a>        .a href="+code=dout" class="sref">dout./a>(.spa> class="string">"ceph_fs_debugfs_cleanup\n"
);oL190" class="line" namon>L190">6190./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_bdi" class="sref">debugfs_bdi./a>);oL191" class="line" namon>L191">6191./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_conges	  >_kb" class="sref">debugfs_conges	  >_kb./a>);oL192" class="line" namon>L192">6192./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsmap" class="sref">debugfs_mdsmap./a>);oL193" class="line" namon>L193">6193./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_caps" class="sref">debugfs_caps./a>);oL194" class="line" namon>L194">6194./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsc" class="sref">debugfs_mdsc./a>);oL195" class="line" namon>L195">6195./a>        .a href="+code=debugfs_removo" class="sref">debugfs_removo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_dentry_lru" class="sref">debugfs_dentry_lru./a>);oL196" class="line" namon>L196">6196./a>}oL197" class="line" namon>L197">6197./a>oL198" class="line" namon>L198">6198./a>int6.a href="+code=ceph_fs_debugfs_init" class="sref">ceph_fs_debugfs_init./a>(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a>)oL199" class="line" namon>L199">6199./a>{oL200" class="line" namon>L200">6200./a>        char .a href="+code=namo" class="sref">namo./a>[100];oL201" class="line" namon>L201">6201./a>        int6.a href="+code=err" class="sref">err./a> =6-.a href="+code=ENOMEM" class="sref">ENOMEM./a>;oL202" class="line" namon>L202">6202./a>oL203" class="line" namon>L203">6203./a>        .a href="+code=dout" class="sref">dout./a>(.spa> class="string">"ceph_fs_debugfs_init\n"
);oL204" class="line" namon>L204">6204./a>        .a href="+code=BUG_ON" class="sref">BUG_ON./a>(!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>);oL205" class="line" namon>L205">6205./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_conges	  >_kb" class="sref">debugfs_conges	  >_kb./a> =oL206" class="line" namon>L206">6206./a>                .a href="+code=debugfs_create_file" class="sref">debugfs_create_file./a>(.spa> class="string">"writeback_conges	  >_kb"
,oL207" class="line" namon>L207">6207./a>                                    0600,oL208" class="line" namon>L208">6208./a>                                    .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL209" class="line" namon>L209">6209./a>                                    .a href="+code=fsc" class="sref">fsc./a>,oL210" class="line" namon>L210">6210./a>                                    &.a href="+code=conges	  >_kb_fops" class="sref">conges	  >_kb_fops./a>);oL211" class="line" namon>L211">6211./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_conges	  >_kb" class="sref">debugfs_conges	  >_kb./a>)oL212" class="line" namon>L212">6212./a>                goto .a href="+code=out" class="sref">out./a>;oL213" class="line" namon>L213">6213./a>oL214" class="line" namon>L214">6214./a>        .a href="+code=snprintf" class="sref">snprintf./a>(.a href="+code=namo" class="sref">namo./a>, sizeof(.a href="+code=namo" class="sref">namo./a>), .spa> class="string">"../../bdi/%s"
,oL215" class="line" namon>L215">6215./a>                 .a href="+code=dev_namo" class="sref">dev_namo./a>(.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=backing_dev_info" class="sref">backing_dev_info./a>..a href="+code=dev" class="sref">dev./a>));oL216" class="line" namon>L216">6216./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_bdi" class="sref">debugfs_bdi./a> =oL217" class="line" namon>L217">6217./a>                .a href="+code=debugfs_create_symlink" class="sref">debugfs_create_symlink./a>(.spa> class="string">"bdi"
,oL218" class="line" namon>L218">6218./a>                                       .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL219" class="line" namon>L219">6219./a>                                       .a href="+code=namo" class="sref">namo./a>);oL220" class="line" namon>L220">6220./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_bdi" class="sref">debugfs_bdi./a>)oL221" class="line" namon>L221">6221./a>                goto .a href="+code=out" class="sref">out./a>;oL222" class="line" namon>L222">6222./a>oL223" class="line" namon>L223">6223./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsmap" class="sref">debugfs_mdsmap./a> =6.a href="+code=debugfs_create_file" class="sref">debugfs_create_file./a>(.spa> class="string">"mdsmap"
,oL224" class="line" namon>L224">6224./a>                                        0600,oL225" class="line" namon>L225">6225./a>                                        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL226" class="line" namon>L226">6226./a>                                        .a href="+code=fsc" class="sref">fsc./a>,oL227" class="line" namon>L227">6227./a>                                        &.a href="+code=mdsmap_show_fops" class="sref">mdsmap_show_fops./a>);oL228" class="line" namon>L228">6228./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsmap" class="sref">debugfs_mdsmap./a>)oL229" class="line" namon>L229">6229./a>                goto .a href="+code=out" class="sref">out./a>;oL230" class="line" namon>L230">6230./a>oL231" class="line" namon>L231">6231./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsc" class="sref">debugfs_mdsc./a> =6.a href="+code=debugfs_create_file" class="sref">debugfs_create_file./a>(.spa> class="string">"mdsc"
,oL232" class="line" namon>L232">6232./a>                                                0600,oL233" class="line" namon>L233">6233./a>                                                .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL234" class="line" namon>L234">6234./a>                                                .a href="+code=fsc" class="sref">fsc./a>,oL235" class="line" namon>L235">6235./a>                                                &.a href="+code=mdsc_show_fops" class="sref">mdsc_show_fops./a>);oL236" class="line" namon>L236">6236./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_mdsc" class="sref">debugfs_mdsc./a>)oL237" class="line" namon>L237">6237./a>                goto .a href="+code=out" class="sref">out./a>;oL238" class="line" namon>L238">6238./a>oL239" class="line" namon>L239">6239./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_caps" class="sref">debugfs_caps./a> =6.a href="+code=debugfs_create_file" class="sref">debugfs_create_file./a>(.spa> class="string">"caps"
,oL240" class="line" namon>L240">6240./a>                                                   0400,oL241" class="line" namon>L241">6241./a>                                                   .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL242" class="line" namon>L242">6242./a>                                                   .a href="+code=fsc" class="sref">fsc./a>,oL243" class="line" namon>L243">6243./a>                                                   &.a href="+code=caps_show_fops" class="sref">caps_show_fops./a>);oL244" class="line" namon>L244">6244./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_caps" class="sref">debugfs_caps./a>)oL245" class="line" namon>L245">6245./a>                goto .a href="+code=out" class="sref">out./a>;oL246" class="line" namon>L246">6246./a>oL247" class="line" namon>L247">6247./a>        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_dentry_lru" class="sref">debugfs_dentry_lru./a> =6.a href="+code=debugfs_create_file" class="sref">debugfs_create_file./a>(.spa> class="string">"dentry_lru"
,oL248" class="line" namon>L248">6248./a>                                        0600,oL249" class="line" namon>L249">6249./a>                                        .a href="+code=fsc" class="sref">fsc./a>->.a href="+code=client" class="sref">client./a>->.a href="+code=debugfs_dir" class="sref">debugfs_dir./a>,oL250" class="line" namon>L250">6250./a>                                        .a href="+code=fsc" class="sref">fsc./a>,oL251" class="line" namon>L251">6251./a>                                        &.a href="+code=dentry_lru_show_fops" class="sref">dentry_lru_show_fops./a>);oL252" class="line" namon>L252">6252./a>        if (!.a href="+code=fsc" class="sref">fsc./a>->.a href="+code=debugfs_dentry_lru" class="sref">debugfs_dentry_lru./a>)oL253" class="line" namon>L253">6253./a>                goto .a href="+code=out" class="sref">out./a>;oL254" class="line" namon>L254">6254./a>oL255" class="line" namon>L255">6255./a>        return 0;oL256" class="line" namon>L256">6256./a>oL257" class="line" namon>L257">6257./a>.a href="+code=out" class="sref">out./a>:oL258" class="line" namon>L258">6258./a>        .a href="+code=ceph_fs_debugfs_cleanup" class="sref">ceph_fs_debugfs_cleanup./a>(.a href="+code=fsc" class="sref">fsc./a>);oL259" class="line" namon>L259">6259./a>        return .a href="+code=err" class="sref">err./a>;oL260" class="line" namon>L260">6260./a>}oL261" class="line" namon>L261">6261./a>oL262" class="line" namon>L262">6262./a>oL263" class="line" namon>L263">6263./a>#else  .spa> class="comment">/* CONFIG_DEBUG_FS */./spa>
 L264" class="line" namon>L264">6264./a>oL265" class="line" namon>L265">6265./a>int6.a href="+code=ceph_fs_debugfs_init" class="sref">ceph_fs_debugfs_init./a>(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a>)oL266" class="line" namon>L266">6266./a>{oL267" class="line" namon>L267">6267./a>        return 0;oL268" class="line" namon>L268">6268./a>}oL269" class="line" namon>L269">6269./a>oL270" class="line" namon>L270">6270./a>void .a href="+code=ceph_fs_debugfs_cleanup" class="sref">ceph_fs_debugfs_cleanup./a>(struct6.a href="+code=ceph_fs_client" class="sref">ceph_fs_client./a> *.a href="+code=fsc" class="sref">fsc./a>)oL271" class="line" namon>L271">6271./a>{oL272" class="line" namon>L272">6272./a>}oL273" class="line" namon>L273">6273./a>oL274" class="line" namon>L274">6274./a>#endif  .spa> class="comment">/* CONFIG_DEBUG_FS */./spa>
 L275" class="line" namon>L275">6275./a>